디지털 양피지/Docker2017. 6. 28. 11:45

* 컨테이너의 리소스 설정


1. 메모리

  -m (--memory): 컨테이너가 사용할 수있는 최대 메모리

                     : 메모리가 부족할 경우 스와핑

  --memory-reservation: -- memory 값보다 적은 값으로 구성하는 소프트 제한 값.

                              : reservation 이상 쓸수 있지만 reservation 값까지 맞추려 한다.


  --kernel-memory: 컨테이너가 사용할 수 있는 커널 메모리로 스왑되지 않는 메모리

         . 최소값은 4m

         . 컨테이너의 커널 메모리 사용이 너무 높을 때 새로운 프로세스를 생성하지 못하도록 제한

         . -m 과 함께 사용시, 제한하는 메모리 값에 포함 된다.

  

  --memory-swap: 컨테이너가 디스크로 스왑할 수 있도록 허용된 메모리


  --memory-swappiness: 컨테이너가 사용하는 어나니모스 페이지 퍼센트로 0~100 범위 값


  --oom-kill-disable: 기본적으로, OOM 에러가 발생하면 커널이 컨테이넌 프로세스를 죽인다.

     . 이 옵션을 사용하면 OOM killer를 해제 한다.

     . -m 옵션을 설정한 컨테이너에만 이 옵션을 사용.

    . 






- 커널 메모리로 잡아놓은 부분은 스왑되지 않는다.

- M, G, K 단위로 잡을 수 있다. 

#docker run -it -m 1G --memory-reservation 500M ubuntu /bin/bash 


2. CPU

 

 -- cpu: 컨테이너가 사용할 수 있는 cpu 리소스 

   . 예; 호스트가 2개의 CPU 를 갖는다면, --cpu="1.5" 설정은 최대 하나 반의 리소스 보장.

   . docker 1.13 이상에서 사용

 

 --cpu-period: CPU 

 --cpu-quota:

 --cpuset-cpu: 컨테이너가 사횽할 수 있는 cpu 나 코어를 제한

    . 0-3: 첫번째 부터 4번째, 1,3: 두번째와 네번째 cpu

    . 특정 cpu의 사용을 제한 할 경우 사용


 --cpu-shares: 컨테이너가 사용하는 cpu 비중을 1024 값을 기반으로 설정

   . cpu 사용에 병목이 있을 경우에만 소프트 제안으로 적용

   . SWARM 모드에서는 컨테이너에 적용되지 않는다.


- 운영중에 변경이 가능하다.

#docker update --cpu-share 512 -m 500M adafda11kd addkadie134 

- restart 설정을 통해서도 가능하다.

 


* Docker 명령어


Docker 구성 정보 찾기

docker info

docker history

docker inspect

docker port

docker help


실행 중인 컨테이너 작업

docker ps

docker attach

docker exec

docker cp

docker diff 

 


이미지 작업 명령어

docker images

docker pull

docker push

docker run

docker save : 이미지에서 추출

docker load

docker export : 컨테이너에서 추출


기존 이미지 수정

docker tag

docker rename 



docker 레지스트리 작업

 docker login

 docker logout

docker search


컨테이너 상태 수정

docker stop

docker start

docker pause

docker unpause

docker kill : 강제

docker restart 


컨테이너 생성/삭제

docker build

docker commit

docker create

docker import 

docker rm

docker rmi (이미지삭제)


Docker 작업 살표보기

 docker events

docker logs

docker stats

docker top

docker wait


* 컨테이너 종료 코드와 재시작 정채

 - run에 주어도 되고 update 명렬으로 실행 중에 주어도 된다.

- no: 재시작 정책의 기본 값으로 컨테이너는 명시적으로 실행 할 때만 시작


- always: 어떤 종료 코드로 종료했는지 상관없이 Docker 서비스가 시작하면 항상 컨테이너를 재시작하도록 설정


- on-failure: 0이 아닌 코드로 컨테이너가 종료할 경우에만 컨테이너를 다시 시작함.

  . 컨테이너를 재시작하려는 시도를 횟수로 지정: on-failure:5


- unless-stopped: 도커 데몬 시작시, 이전에 종료된 상태의 컨테이너는 다시 시작하지 않는 점만 제외하고는 always와 동일 (host가 죽을 당시의 상태로 올려준다.)



#docker run --restart=always mongo

#docker run --restart=on-failure:5 

- inspect에서 확인 할 수 있다.

- docker restart 시 100ms, 200ms, 400ms, 800ms ..의 delay가 발생한다 on-failure count까지 (flood-like protection)

- 정상적으로 부팅되면 다시 100ms 로 세팅된다.



* Docker 모니터링


-docker stats xxx

-docker top xxx


-docker logs

docker inspect -f {{.LogPath}} xxxxx 


- host의 /var/lib/docker/containers 에 container 정보들이 저장된다.


- 기본적으로 --log-driver 에 json-file로 설정되어 있다.

  (제공되는 syslog, jourld 등으로 쓸수 있다.)

 - splunk, gelf 등 다른 log-driver로 바꿀수 있다. (다른 드라이버로 설정이 되면 docker logs로 볼 수는 없다)

#docker run --log-driver=syslog ubuntu 


- 위에 hostname, hosts, resolve.conf는 모두 컨테이너 안에서 직접 사용하는 것이다.


- 로그 파일이 계속 커질 수 있으니 설정이 필요한다.

 --log-opt max-size=[0-9+][k|m|g]

 --log-opt max-file=[0-9+]


- 컨테이너로 보는 거라 image로 보는 것이랑 inspect 정보는 다르다.

- runtime 시 볼수 있는 것들은 container에서 볼 수 있다.


*컨데이너 이벤트

-f를 통하여 필요한 것만 보자.

container=<name or id>

event=<event action>

 




'디지털 양피지 > Docker' 카테고리의 다른 글

4. Docker 네트워킹  (0) 2017.06.28
4. 컨테이너 스토리지  (0) 2017.06.28
4. Dockerfile 실습  (0) 2017.06.28
3. 이미지 태그 관리와 Dockerfile  (0) 2017.06.27
3. Container 이미지 실행  (0) 2017.06.27
Posted by 빨간 양말