▶︎ 도커 용량 확인
$ 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 <컨테이너 이름>