Profile picture

[Docker] 컨테이너를 다루는 다양한 옵션

JaehyoJJAng2022년 05월 12일

▶︎ 도커 용량 확인

$ docker system df

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          2         1         222.9MB   77.81MB (34%)
Containers      1         1         2B        0B (0%)
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B

▶︎ 경량화 이미지

  • :alpine
  • 도커는 특정 응용 프로그램 실행을 목적으로 하는 경우가 많기 때문에 , 다양한 기능을 모두 포함할 필요가 없다
    • 동일한 기능을 한다면 도커 이미지/컨테이너의 사이즈가 작을 수록 좋음
  • 운영체제 운영에 필요한 가장 기본이 되는 유틸리티(시스템 프로그램)만 모아놓은 리눅스 패키지

$ docker pull httpd:alpine
$ docker run -d -it -p 9999:80 --name webapache -v /home/ubuntu/21_DEV_HTML:/usr/local/apache2/htdocs httpd:alpine

▶︎ 조작 명령어

‣ stats

  • 실행중인 컨테이너 리소스 확인
$ docker container stats

CONTAINER ID   NAME       CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O       PIDS
e0bc36ba3941   myapache   0.01%     12.62MiB / 1.639GiB   0.75%     41.5kB / 1.99MB   356kB / 4.1kB   82

‣ exec

  • 실행중인 컨테이너에 명령
  • docker exec -it : docker run 에서 표준입력(-i), 터미널(-t) 옵션이며, docker exec 에서도 사용가능

사용방법

$ docker exec 옵션 컨테이너_ID 명령 인자

다음과 같이 명령하면 /bin/sh 쉘 프로그램을 실행하면서 터미널에 연결 : 컨테이너 내부로 들어갈 수 있음

$ docker exec -it apacheweb /bin/sh

/bin/bash가 아닌 이유는 alpine 리눅스에는 /bin/bash가 들어있지 않음

$ docker exec -it apacheweb /bin/sh

‣ 컨테이너 접속

실행 중인 컨테이너에 접속하기

# ubuntu 컨테이너 생성
$ docker run -it -d --name myubuntu3 ubuntu:latest

# docker attach 컨테이너ID
$ docker attach myubuntu3

‣ 컨테이너 삭제

# 모든 컨테이너 중지 후 컨테이너 삭제하기
$ docker stop $(docker ps -a -q); docker rm $(docker ps -a -q) ; \

# 모든 이미지 삭제하기
docker rmi $(docker images -q)

‣ docker prune

$ docker container prune # 정지된 컨테이너 삭제

$ docker image prune # 실행중인 컨테이너 image 외의 이미지 삭제

$ docker system prune # 정지된 컨테이너 , 실행중인 컨테이너 이미지 외의 이미지 , 볼륨 , 네트워크 삭제

‣ cp

컨테이너에서 특정 파일을 호스트PC로 복사

# 컨테이너 생성하기
docker run -dit -p 9999:80 --name httpd_history --rm httpd:latest

# apache2 설정파일 가져오기
docker cp httpd_history:/etc/apache2/sites-available/000-default.conf ./

반대로 호스트PC 에서 컨테이너에 특정 파일을 복사할 수도 있음.

# 컨테이너에 넣기
docker cp ./000-default.conf \
  httpd_history:/etc/apache2/sites-available/000-default.conf

# 컨테이너 접속 및 변경된 파일이 잘 들어갔는지 확인하기
docker exec -it httpd_history /bin/bash
container# cat /etc/apache2/sites-available/000-default.conf |grep -i "document.*"

‣ diff

  • 컨테이너가 실행되면서 , 본래의 이미지와 비교해서 변경된 파일 목록 출력\
    • A : 파일 또는 디렉토리 추가
    • D : 파일 또는 디렉토리 삭제
    • C : 파일 또는 디렉토리 수정
# 지금까지 변경된 내역
docker diff <컨테이너 이름>

Loading script...