- Docker Container 명령어
container는 격리된 환경에서 동작하는 Linux 프로세스
container 프로세스는 Linux 프로세스로서 관리되지만, container 프로세스는 완전 격리된 프로세스로 동작하며 현재 시스템의 kernel 기능을 공유함
container는 격리된 프로세스이므로 PID 는 1번을 가짐
- Container 생성 과정 (생명주기)
docker image pull( 다운로드 ) / docker image 생성( build )
-> docker container 생성( create ) => 격리된 프로세스 생성
-> docker container 실행( start ) => application 실행
-> docker container 중지( stop ) -> 재시작( restart )
-> docker container 삭제( remove ) => application 종료
- Docker Image 명령
- docker image save [옵션] [이미지명] [파일명]
- docker image를 tar 파일로 저장
- docker image save 명령 사용 usecase
- docker hub로 부터 image를 download 받아 내부망으로 이전 하는 경우
- 신규 app 에 대한 image를 생성한 후 배포 또는 보관 해야 하는 경우
- 네트워크를 통해 registry에 접속할 수 없는 환경에서 image를 배포 하는 경우
- docker image load [옵션] [파일명]
docker image를 저장한 파일 내용으로 image 복원
- dockker create [이미지이름] [옵션]
- container 생성 - 실행은 아님
- --name [container name] - container 에 이름 부여, 별도로 이름을 부여하지 않으면 자동으로 임의의 이름이 부여됨
- -it
- i 대화식 모드 사용
- t tty(단말 디바이스) 사용
ex) docker create -it --name test-mysql1 mysql:5.7
임의의 이름이 자동으로 부여됨
맨 뒤 names 에서 이름 확인 가능
- docker start [container id / name]
- 컨테이너 실행
status 를 보면 실행되었다가 수행할 내용이 없어서 바로 종료되어 exited 로 표시되는 모습
- docker restart [container id/name] - 컨테이너 재시작
- docker stop [container id/name] - 컨테이너 중지
- docker attach [container id/name]
동작 중인 container에 접속
- docker exec [옵션] [container id/name] [cmd]
동작중인 container에 명령 전달 실행
- docker container rm [container id/name]
컨테이너 삭제 - app 실행 종료
실행중인 container는 삭제 불가
실행중인 container를 삭제할땐 중지 후 삭제
docker rm $(docker ps --filter 'status-exited' -a -q) - Exited 상태인 container를 모두 삭제
- docker rmi [이미지 이름]
- docker 이미지 삭제
- 삭제할 image의 정확한 이름 표기
- 현재 container로 동작중인 image는 삭제 불가
- -f 옵션 - 실행중인 container 강제 종료 및 image 삭제
- docker run [option] [image name] [cmd]
image download, create, start 을 일괄적으로 수행하는 명령
docker pull + docker create + docker start
-i : 대화식 모드 사용
-t : tty(단말 디바이스) 사용
-d : 백그라운드에서 컨테이너 실행, container를 데몬 프로세스로 생성
--name [string] : container에 이름 부여
-h [hostname] : container의 hostname 설정
-rm : container 종료 후 삭제
-p [host port]:[container port] : host 포트와 container 포트 연결(포트 포워딩)
-v [host path]:[container path] : host 경로와 container 경로의 공유 볼륨 설정
-e [환경변수이름]=[값] : container 내의 환경 변수 등록
--net=[네트워크 이름] : container를 네트워크에 연결
ctrl+p, ctrl+q : container에 진입한 상태에서 contaier를 계속 실행상태를 유지하면서 빠져나오는 방법
ctrl+d : container에 진입한 상태에서 container를 중지하고 빠져 나오는 방법
이미지 다운로드 + 컨테이너 생성+ 컨테이너 실행
호스트 이름이 myubuntu 로 바뀜
- container 모니터링 도구
서비스 운영을 하면서 필요한 시스템 metric (CPU, memory, network traffic)을 모니터링 하면서 특이사항이 있을 때 대응하기 위해 모니터링 수행
container 환경에서 기존 모니터링 도구로는 container 모니터링 진행이 어려움
- cAdvisor
google 제공 cAdvisor (container Advisor)를 사용하면 GUI 방식으로 container에 대한 모니터링을 쉽게 수행할 수 있다.
https://github.com/google/cadvisor
cAdvisor container 생성 방법
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--privileged \
--device=/dev/kmsg \
gcr.io/cadvisor/cadvisor:
cAdvisor 실행 방법
- cAdvisor container가 동작중인 [host ip]:9559
- docker stats [container id/name]
- container 리소스 상태 실시간 확인
- 시각적으로 확인 시에는 google cAdvisor 사용
- docker top [container id/name]
- container의 실행중인 프로세스 상태 확인
- docker cp [원본파일] [container id/name]:[복사할 위치 및 파일 이름]
- host에 있는 파일을 container 내 지정된 위치에 복사
- docker container ls
- docker ps [option]
실행중인 container 목록 출력
- a : 생성/종료된 container도 모두 출력 (all)
출력 내용
- CONTAINER ID
- IMAGE
- COMMAND - contamer 생성 시 실행한 명령
- STATUS
- PORTS
- NAMES
- docker systemm prune
실행중인 container 를 제외한 회수 가능한 자원 회수
'Kubernetes > [구름] 쿠버네티스 전문가 양성 과정 k-digital' 카테고리의 다른 글
[10주-10.4] Docker Image 생성 (0) | 2022.10.05 |
---|---|
[9주-9.30] docker container 명령어2 (0) | 2022.10.05 |
[9주-9.28] Docker 환경 구성 (0) | 2022.09.29 |
[9주-9.27] Docker / 기반 기술 이해 (0) | 2022.09.29 |
[9주-9.26] Docker 이해 (0) | 2022.09.26 |