출처 : 따배도 6~7 (Youtube)
docker search
: docker image를 검색할 수 있다.docker pull
: image 다운로드docker images
: image 목록 학인--no-trunc
: image id fullname으로 출력docker inpect [옵션] 도커오브젝트
: 정보확인--format '{{???}}'
: 특정 정보만 보고싶을 때.--format '{{NetworkSettings.IPAddress}}'
docker rmi
: docker image 삭제docker create
: image를 container로 만들기(running중인 상태 아님)docker start/stop
: container를 시작/종료docker ps
: container 상태 확인docker rm
: container 삭제docker run
: pull→create→start, container image가 있는지 확인하고 없으면 pull하는 명령이 포함됨docker top 컨테이너
: 컨테이너에서 동작중인 프로세스를 보여줌docker logs 컨테이너
: 컨테이너의 로그를 보여줘(-f
: foreground)docker exec 컨테이너 명령어
: 컨테이너에 명령어를 실행시켜줘(-it
: 컨테이너로 들어갈 수 있음)docker attach
: foreground로 실행중인 container에 연결docker stats
: 실행중인 컨테이너의 런타임 통계를 확인docker events
: 도커 호스트의 실시간 event 정보를 수집해서 출력cAdvisor
: 도커 모니터링 툴 (github)참고 : stress 사용법
# dockerfile
FROM debian
RUN apt-get update \
&& apt-get install stress -y
CMD ["/bin/sh","-c","stress -c 2"]
# dockerfile을 통해 image 생성
$ docker build -t stress .
# 최대 memory : 100m / 실제 사용 memory : 90m, 5초 후 종료 -> 성공
$ docker run --rm -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s
# 최대 memory : 100m / 실제 사용 memory : 90m, 5초 후 종료 -> 실패
$ docker run --rm -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 150m -t 5s
# oomkilldisable 설정하기(Ubuntu에서 안되서 Centos에서 해보니 됨)
$ docker run -d --oom-kill-disable=true -m 100m --name m1 nginx
# oomkilldisable 확인하기
$ docker inspect m1
$ cat /sys/fs/cgroup/memory/docker/컨테이너ID/memory.oom_control
# cpu 리소스 제한
$ docker run -d --cpuset-cpus 0 --name c1 stress stress --cpu 1
$ docker run -d --cpuset-cpus 1 --name c2 stress stress --cpu 1
$ docker run -d -c 2048 --name cload 1 stress
# block I/O 제한
$ lsblk # device이름 확인
$ docker run -it --rm --device-write-iops /dev/sda:10 ubuntu:latest /bin/bash
$ dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct
$ docker run -it --rm --device-write-iops /dev/sda:100 ubuntu:latest /bin/bash
$ dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct
# cadvisor 설치해서 container들의 resource 사용현황을 볼 수 있다. kubernetes의 kubelet에는 cadvisor가 들어가 있다.
VERSION=v0.36.0 # use the latest release version from https://github.com/google/cadvisor/releases
sudo 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:$VERSION
# 실습 mysql container를 physical memory : 500M, swap memory : 600M, cpu core : 1 로 생성
$ docker run -d --cpus 1 -m 500M --memory-swap 600M -e MYSQL_ROOT_PASSWORD=pass --name db mysql