컨테이너에서 실행 중인 애플리케이션을 최적화 하는 방법에 대해 알아보겠습니다.
먼저, 모든 애플리케이션은 CPU와 메모리 를 사용합니다.
일반적인 프로세스는 사용량이 별도로 제한되어 있지 않기 때문에 프로세스를 실행시키면 이론상 하드웨어의 모든 리소스를 사용할 수 있게 됩니다.
예를 들어 제가 사용하는 맥과 같이 10core 24g 메모리를 가진 하드웨어에 프로세스를 실행시키면 이 실행 중인 프로세스는 하드웨어의 모든 리소스를 사용할 수 있게 됩니다.
그런데 Docker는 가상화 기술이고 이 컨테이너를 격리된 공간에서 실행하기 때문에 프로세스가 사용 가능한 리소스를 제한할 수 있습니다.
컨테이너의 리소스를 제한하는 방법은 아래와 같습니다.
# 컨테이너가 사용할 최대 CPU코어 수 정의 : docker run --cpus={CPUcore수}
# 컨테이너가 사용할 최대 메모리 정의(b,k,m,g 단위) : docker run --memory={메모리용량}
docker run --cpus=1 --memory=8g
docker run --cpus=0.5 --memory=8g위와 같이 docker run 명령을 사용할 때, cpus 옵션에 1, memory 옵션에 8g를 입력하면 실행된 컨테이너는 전체 하드웨어의 리소스 중에 1코어의 CPU와 8GB의 메모리를 사용할 수 있게 됩니다.
주의해야할 점은 이렇게 값을 지정한다고 해서 이 컨테이너가 실행중일 때, 항상 1코어와 8GB만큼 공간을 차지하고 있는 것이 아니라 컨테이너가 사용할 수 있는 최대 사용량이 제한되어 있다는 것입니다.
다음으로 컨테이너 리소스의 사용량을 조회하는 명령어는 아래와 같습니다.
# 컨테이너의 리소스 사용량 조회
docker stats (컨테이너명/ID)
# Host OS에서 발생하는 이벤트 로그 조회
docker events이 링크를 통해 구매하시면 제가 수익을 받을 수 있어요. 🤗