[구름 k8s] TIL 2-4-4

Peppie·2022년 9월 29일
0

1. Docker Container 명령어

Docker image 명령

docker image save [옵션] <image명> <파일명>

docker image를 tar 파일로 저장

ex) docker image save mysql:5.7 > mysql57.tar

만약 압축파일 형태로 주고 싶다면
docker image save mysql:5.7 | gzip > mysql57-2.tar.gz

docker image save 명령 사용 경우

  • docker hub로부터 image를 download 받아 내부망으로 이전하는 경우
  • 신규 어플리케이션에 대한 image 생성 후 배포 or 보관하는 경우
  • 네트워크를 통해 registry에 접속 불가능한 환경에서 image 배포하는 경우

docker image load [옵션] <파일명>

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

ex) docker image load < mysql57.tar

  • container 생성 == application 실행
  • container는 격리된 (가상)환경에서 동작하는 Linux 프로세스
  • container 프로세스는 Linux 프로세스로서 관리됨 but 완전 격리된 프로세스로 동작,
    현재 시스템의 kernel 기능 공유
  • container는 격리된 프로세스 -> PID는 1번 PID

container 생성 과정 (생명 주기)

docker image pull (다운로드) / docker image 생성 (build)
-> docker container 생성 (create) : 격리된 프로세스 생성
-> docker container 실행 (start) : application 실행
-> docker container 중지 (stop) -> 재시작 (restart)
-> docker container 삭제 (remove) : application 종료

docker create <image 이름> [옵션]

container 생성 (실행 X)

  • --name <container 이름> : container에 이름 부여, 별도 이름 부여 X일시 자동으로 임의의 이름 부여
  • -it
    • -i : 대화식 모드 사용
    • -t : tty (단말 디바이스) 사용
ex) docker create -it --name test-mysql1 mysql:5.7

docker start <container ID/이름>

container 실행

docker stop <container ID/이름>

container 중지

docker container rm <container ID/이름>

container 삭제, 즉 어플리케이션 실행 종료
실행중인 container는 삭제 불가능 -> 삭제할 때는 먼저 docker stop 명령으로 container 중지 후 삭제

docker rm $(docker ps --filter 'status=exited' -a -q)

Exited 상태인 container를 모두 삭제

docker attach <container ID/이름>

동작 중인 container에 접속

docker exec [옵션] <container ID/이름> <명령>

동작 중인 container에 명령 실행

docker run [옵션] <image 이름> [container에서 동작 명령]

( image download, ) 생성, 실행을 일괄적으로 수행하는 명령
(docker pull +) create + start 명령을 차례대로 입력한 것과 동일한 결과 수행

  • -i : 대화식 모드 사용
  • -t : tty (단말 디바이스) 사용
  • -d : 백그라운드에서 컨테이너 실행, container를 데몬 프로세스로 생성
  • --name <container에 부여할 이름> : container 이름 부여
  • -h <host 이름> : container의 hostname 설정
  • -rm : container 종료 후 삭제
  • -p <host 포트>:<container 포트> : host 포트와 container 포트 연결 (포트 포워딩)
ex) docker run -d -p 8080:80 --name nginx nginx
  • -v <host 경로>:<container 경로> : host 경로와 container 경로의 공유 볼륨 설정
  • -e <환경변수이름>=<값> : container 내 환경 변수 등록
  • --net=네트워크 이름 : container를 네트워크에 연결

ctrl+p, ctrl+q : container에 진입한 상태에서 container를 계속 실행 상태를 유지하면서 빠져나오는 방법

ctrl+d : container에 진입한 상태에서 container를 중지하고 빠져 나오는 방법

ubuntu 생성 실습

Linux 실행

docker run -it -d --name <container 이름> <Linux image 이름>

container 진입 : docker attach

container 명령 : docker exec

webserver 실행

docker run --name webserver -d -p 8080:80 <webserver image명>

nginx container 실행, host port 8080을 container port 80으로 포트포워딩
-> container는 docker 가상 네트워크 상에서 동작; host 네트워크와는 다른 네트워크 사용

webserver 기본 페이지 변경 - 계산기로 변경

container 모니터링 도구

서비스 운영을 하면서 필요한 시스템 metric (CPU/memory 사용률, 네트워크 트래픽 등)을 모니터링 하면서 특이사항이 있을 때 대응하기 위한 모니터링 수행

container 환경 하에서는 기존 모니터링 도구로는 container 모니터링 진행 어려움
-> 구글 제공 cAdvisor (container Advisor)를 사용하면 GUI 방식으로 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가 동작 중인 <호스트 IP>:9559

docker stats <container ID/이름>

container 리소스 상태 실시간 확인
시각적으로 확인시에는 google cAdvisor 사용

docker top <container ID/이름>

container의 실행 중인 프로세스 상태 확인

docker cp <원본 파일> <container ID/이름>:<복사 위치 및 파일 이름>

host에 있는 파일을 container 내 지정된 위치에 복사

ex) docker cp index.html webserver:/usr/share/nginx/html/index.html

docker container ls 또는 docker ps [옵션]

실행 중인 container 목록 출력

  • -a : 생성/종료된 container도 모두 출력

출력 내용

  • CONTAINER ID : container 생성시 부여된 임의의 64자리 ID
  • IMAGE : container 생성시 사용한 image
  • COMMAND : container 생성시 실행한 명령
  • CREATED : container 생성 시간
  • STATUS : 현재 container 상태
  • PORTS : container에 port forward 정보
  • NAMES : 임의로 부여된 container 이름, container 생성시 사용자가 이름 지정 가능

docker system prune

실행 중인 container를 제외한 회수 가능한 자원 회수

0개의 댓글