공부하기싫어
article thumbnail

 

  • 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를 배포 하는 경우

tar 로 묶기
tar.gz 으로 압축

 

 

 

  • docker image load [옵션] [파일명]

docker image를 저장한 파일 내용으로 image 복원

image load

 

 

 

  • dockker create [이미지이름] [옵션]

- container 생성 - 실행은 아님

- --name [container name] - container 에 이름 부여, 별도로 이름을 부여하지 않으면 자동으로 임의의 이름이 부여됨

- -it

   - i 대화식 모드 사용

   - t tty(단말 디바이스) 사용

ex) docker create -it --name test-mysql1 mysql:5.7

docker create

임의의 이름이 자동으로 부여됨

이름 지정 create

맨 뒤 names 에서 이름 확인 가능

 

 

  • docker start [container id / name]

- 컨테이너 실행

start

status 를 보면 실행되었다가 수행할 내용이 없어서 바로 종료되어 exited 로 표시되는 모습

 

 

 

 

  • docker restart [container id/name] - 컨테이너 재시작
  • docker stop [container id/name] - 컨테이너 중지

stop - restart

 

 

 

  • docker attach [container id/name]

동작 중인 container에 접속

 

 

 

  • docker exec [옵션] [container id/name] [cmd]

동작중인 container에 명령 전달 실행

exec - bash

 

 

 

  • docker container rm [container id/name]

컨테이너 삭제 - app 실행 종료

실행중인 container는 삭제 불가

실행중인 container를 삭제할땐 중지 후 삭제

docker rm $(docker ps --filter 'status-exited' -a -q) - Exited 상태인 container를 모두 삭제

docker rm
filter
이미지 삭제

  • 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를 중지하고 빠져 나오는 방법

-d option
run -d httpd

이미지 다운로드 + 컨테이너 생성+ 컨테이너 실행

 

 

-p 옵션
-p 옵션 nginx
할당한 포트 접속
-h 옵션

호스트 이름이 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 를 제외한 회수 가능한 자원 회수

prune