데스크탑의 로컬 환경에서 작업을 할 경우에는 문제가 없는데
노트북으로 컨테이너를 띄우고 사용을 하게되면 CPU 자원 할당이 100%가 되는 현상을 자주 겪게되어 리소스를 제한하는 방법을 찾아본다!
도커와 도커 컴포즈 모두 제한하는 방법이 있지만
컴포즈를 자주 사용하니 이것만 알아 보도록 한다.
2버전과 3버전의 옵션이 상이하니 참고하시길 바랍니다.
version: "3.9"
services:
redis:
image: redis:alpine
deploy:
resources:
limits:
cpus: '0.50'
memory: 50M
reservations:
cpus: '0.25'
memory: 20M
아주 간단하게도 reservations
는 최소치이며 limits
는 한계치이다.
해석을 하면 cpu가 최소 25%, 최대 50%를 사용하며
메모리는 최소 20M, 최대 50M을 사용하게 제한한다.
시스템이 사용가능한 메모리보다 상회하는 메모리를 컨테이너가 사용하게 되면
OOME가 발생할 수 있으며 컨테이너 또는 Docker 데몬이 커널 OOM 킬러에 의해 종료될 수 있습니다.
https://docs.docker.com/compose/compose-file/compose-file-v3/#resources