보안 요구사항
docker container의 메모리 사용량을 제한하는 내용이 있다.Default로 docker container는 host의 모든 메모리를 사용할수 있는데,
그럼 container 하나가 host 메모리 전체를 다 차지해서 다른 container또는 host가 동작 못하게 할 수 있다.
또는 docker service가 OOM killer에 의해 kill 당할 수도 있다.
또는 attacker가 private network로 container에 진입하여 많을 메모리를 사용하는 service을 인위적으로 실행할 수도 있다.
docker-compose 에서 컨테이너 메모리 제한하기
docker-compose.yml에 아래와 같이 deploy 내용을 추가한다.memory에 100M를 입력하면 100Mib로 제한한다.
아래에서, 적용하려는 서비스는 'nginx', 사용하는 이미지:tag는 'nginx:1.20.1', 메모리를 100Mib로 제한하고 싶을떄,
nginx:
image: nginx:1.20.1
deploy:
resources:
limits:
memory: 100M
docker stat --all 명령어로 메모리가 제한된 상태를 확인할 수 있다.
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
e2dcbb92883f nginx 0.00% 1.59MiB / 100MiB 1.59% 47.8kB / 408kB 213kB / 0B 2
MEM USAGE / LIMIT 열을 보면 / 100MiB 로 제한되어 있다.
추가
상세내용 참고 : https://docs.docker.com/compose/compose-file/compose-file-v3/#resourcesdocker-compose 버전 2와 3은 메모리 제한하는 옵션이 좀 다르게 생겼다.
위 예시는 버전 3기준이다.
위 링크에 보면 CPU도 마찬가지로 제한가능하다.
덧,
1 Mebibyte (MiB) 는 (220 / 106) megabytes (MB) 와 같다.크게 차이 없으나 정확한 값이 알고 싶으면 구글을 이용한다.
MiB와 MB차이 의미 : https://brunch.co.kr/@leedongins/133
0 댓글