도커 컨테이너 리소스 관리

최지영·2022년 10월 29일
2

😉 도커 컴포즈 설정으로 컨테이너 리소스 관리하기

도커를 무분별하게 한 PC에서 여러 컴포즈 파일들을 올리고 내리다보면 리소스 관리가 되지않아 한 컴퓨터의 100퍼센트 성능을 낼 수 없다. 이건 또 무슨소리????!

다른 글에서도 말했지만 도커는 한 커널위에서 모든 컨테이너들이 동작한다.

CPU나 메모리의 자원은 항상 한정되어 있지만 모든 컨테이너들이 동작하면서 서로서로 100퍼센트의 자원을 사용한다고 가정한다면 메모리는 메모리대로 로컬리티와 디스크 입출력에 있어서 문제가 생길것이고 CPU 스케줄링에 있어서 시간이 지연되고 어플리케이션의 성능이 확연하게 떨어지게 될것이다.

분명 제 로컬에서는 잘 동작했는데요..라고 말하지만 리소스관리가 되지 않는 PC에서는 올바른 성능을 내지 못할것이다.

그렇기 때문에 도커에서는 별도 리소스를 관리할 수 있는 옵션을 줄 수 있는데 옵션의 내용은 다음 아래와 같다.

docker-compose.yml


아래는 간단하게 nginx 컨테이너에 자원을 제한하는 옵션이다.

기본으로 호스트 시스템의 컴퓨팅 성능에 대한 엑세스는 무제한이다 따라서 이를 제한할 필요가 있는데 살펴볼 옵션은 cpu와 memory이다

옵션


아래 옵션 내용을 살펴보면 cpus: 0.50은 CPU의 50%을 사용하고 메모리는 512MB 만 사용하고

CPU의 25퍼센트와 메모리는 128MB는 예약 하도록 하는 옵션이다

services:
  service:
    image: nginx
    deploy:
        resources:
            limits:
              cpus: 0.50
              memory: 512M
            reservations:
              cpus: 0.25
              memory: 128M

위 설정을 배포하고 docker stats커맨드로 현재 동작하는 컨테이너들의 자원 현황들을 볼수 있다.

위 설정이라면 메모리가 512M가 LIMIT에 적힌것을 볼 수 있다.

2개의 댓글

comment-user-thumbnail
2023년 2월 9일

좋아요

답글 달기
comment-user-thumbnail
2023년 2월 9일

DP에서 나왔습니다.

답글 달기