도커 컨테이너는 기본적으로 호스트의 자원을 제한 없이 사용하게 된다.
컨테이너의 자원 할당을 제한하여 호스트와 다른 컨테이너의 동작을 방해하지 않게 설정을 할 수 있다.
컨테이너에 자원 할당 옵션을 설정하지 않으면 호스트의 자원을 전부 점유하여 다른 컨테이너들 뿐만 아닌
호스트 자체의 동작이 정지 될 수 있는 장애를 발생 할 수 있다.
다음은 컨테이너에 설정된 자원 제한을 확인하는 방법이다.
# docker inspect rsyslog syslog [ { ... "Isolation": "", "CpuShares": 0, "Memory": 0, "NanoCpus": 0, "CgroupParent": "", "BlkioWeight": 0, "BlkioWeightDevice": [], "BlkioDeviceReadBps": null, "BlkioDeviceWriteBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteIOps": null, "CpuPeriod": 0, "CpuQuota": 0, },
run 명령어에서 실행되는 컨테이너의 자원 제한을 변경하려면,
update명령어를 사용할 수 있다.
# docker update {변경될 자원제한} {컨테이너이름} # docker update --cpuset-cpus=1 centos ubuntu
컨테이너 메모리 제한
docker run 에 --memory 옵션을 사용하여 컨테이너의 메모리를 제한 할 수 있다.
입력단위는 m(megabyte), g(gigabyte) 이며 제한 할 수 있는 최소 메모리는 4 MB 이다.
다음의 명령어는 1GB로 메모리 사용량을 제한한다.
# docker run -d \ --memory="1g" \ --name memory nginx # docker inspect memory | grep \"Memory\"Memory" : 10234124123,
컨테이너 에서 동작하는 프로세스가 컨테이너에 할당된 메모리를 초과하면
컨테이너는 자동으로 종료 된다.