Infra/IaC

[Docker] 컨테이너 운용에 필요한 CLI

jykim23 2023. 10. 17. 19:21

Docker CLI

https://docs.docker.com/engine/reference/commandline/cli/

docker [container] 컨테이너가 기본값이다. 그래서 다른 명령어와 달리 명시하지 않고 사용 가능하다.

 

# 모니터링을 위한 상태 확인

docker top

docker port

docker stats

> cadvisor 도커를 올려서 모니터링도 가능

 

로그 목적 : 컨테이너 내부의 오류를 알려주기 위해 사용한다.

docker logs -f [컨테이너]

docker info | grep -i log # 로그 정보 확인 가능.

vi /etc/docker/daemon.json # 도커 데몬에 대한 설정으로 제어 가능

컨테이너에 옵션으로 설정도 가능.

 

docker inspect

docker cp | restart # copy. 주로 배포(업데이트)할때 쓰인다.

docker events # docker engine의 로그

docker kill # 컨테이너 삭제. 번외(리눅스) kill -9 : 컨테이너가 아닌 연결된 세션만 끊는다.

docker exit code

docker attach # 내부의 로그를 보기 위한 접속

docker exec # 내부에서 작업을 하기 위한 접속

docker diff # 변동 사항 확인 연동

docker commit # 변동 사항을 포함하여 이미지로 저장.

docker export | import # 변동사항을 포함하여 파일로 저장. import 할때는 고려 사항이 있으니 참고.

 

 

컨테이너 격리 기술

컨테이너 = [RO]이미지 스냅샷(package,libraray,..) + [RW]Process(pid=1)

격리 기술 Description
chroot 프로세스의 루트 디렉토리를 변경, 격리하여 가상의 루트 디렉터리를 생성
pivot_root 루트 파일시스템 자체를 바꿔, 컨테이너가 전용 루트 파일시스템을 가지도록 함(chroot 보완)
Mount namespace namespace 내의 파일 시스템 트리를 구성
UTS namespace 컨테이너에 대한 hostname 격리를 수행하여 고유한 hostname 보유 가능
PID namespace PID와 프로세스를 분리(systemd와 분리)
Network namespace 네트워크 리소스(IP, Port, route table, ethernet,..) 할당
IPC namespace 전용의 process table 보유

 

 

컨테이너 lifecycle

docker create : create snapshot of image on /var/lib/docker

docker start/stop : create/remove container layer for dynamic container

docker rm : remove created snapshot of image

docker run : docker create + docker start