* 컨테이너의 리소스 설정
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 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 |