docker compose cpu limit / 도커 컴포즈 cpu 제한

2019. 9. 2. 10:32OS & Server/Docker

728x90

Docker Container를 사용하다보면 다중 컨테이너를 사용하게 되는 경우가 빈번합니다.

예로 들면, 하나의 사이트를 만들다보면 각 역할별로 분할시켜버리면...

  • Front Container
  • Back Container
  • Database
  • Celery
  • Caching Server
  • Web Server

등 더 많게 쪼개는 분들도 봤습니다만 그렇게 까진 못하겠더라구요.

 

 

뭐 예시로 데이터베이스의 경우 메모리나 cpu가 어느정도 받쳐줘야하는데 다른 컨테이너가

많은 사용자 또는 잘못된 코드나 요청으로 혹은 해커의 공격으로 인하여

문제가 생길경우 평소보다 높은 자원량을 요구하여 데이터베이스 컨테이너가 자원이 부족한 현상으로 인해

컨테이너가 종료되는 현상이 생길 수 있죠.

 

 

이럴때를 대비한다고 해야하나

컨테이너간 자원을 제한해서 다른 컨테이너의 요구 상한치를 넘보지 못하도록 하는 방법이 도커에선 존재합니다.

물론 컴포즈에서도 가능하고

 

너무 많은 사용자 트래픽으로 인해 생기는 문제라면 차라리 제한을 하되 도커스웜을 사용하여 

분산 병렬 노드화를 시키는게 더욱 효율성이좋고... 돈이 많다면 서버사양을 흠흠..

 

 

 

 

저는 현재 Docker Compose Version2를 사용하고 있으며, 

version2를 기준으로 내용을 작성할텐데 Version3의 경우는 추후에 언젠가... 올리도록 하겠습니다.

version3은 생각보다 자료가 많은편에 속하지만

 

version2의 경우는 그렇지 못하더군요.

 

 

하지만 킹갓제네럴엠페러..

갓 도커성님은 컴포즈 공식문서에도 Version1 / 2 / 3 모두 작성이 되어 있었습니다.

 

유저들이 SEO를 너무 잘해서 공식문서가 최상단에 안뜨는 불편한 현실..

 

? 뜨네요

 

 

 

 

 

어쨋든 https://docs.docker.com/compose/compose-file/compose-file-v2/

 

Compose file version 2 reference

Reference and guidelines These topics describe version 2 of the Compose file format. Compose and Docker compatibility matrix There are several versions of the Compose file format – 1, 2,...

docs.docker.com

에서 Version2의 관련된 공식문서 내용을 보면

 

 

 

 

정확히는 2.1 - 2.2 부터 cpu 관련 제어를 사용할 수 있답니다.

저 옵션들을 전부 쓰고싶다면 version을 2.2로 명시하는게 더 좋겠네요.

 

 

cpu_count 코어 수 제한
cpu_percent 각 코어별 사용률 전체 비율을 퍼센트로 제한
cpus cpus를 0.5라고 할당하면 50%로 제한
cpu_shares

cpu 가중치라고 하는데 기본값은 1024 입니다.

2048을 주면 2배를 사용하고 4096이면 4배...

 

뭐 저한테는 그닥 필요가 없는 것 같군요

우선순위 중요도를 따질 때 사용하는 것 같습니다.

version3에서는 옵션은 있지만 cpus를 통해서 걍 한번에 해라! 라고 하는것 같아요

뭐 cpu_quota나 cpuset은 별로 안중요한 거 같으니깐 패스

 

docker compose는 오히려 version3 보다 version2가 명시가 쉽습니다.

 

version: '2'
services:
  overmap:
  	build:
      context: ./overmap
      dockerfile: dockerfile
    ports:
      - 80:80
      - 443:443
    restart: always
    volumes:
      - ./overmap:/overmap
    cpus: ".25"

가장 아래에 추가한 cpus만 보면 되는것이죠. 정말 쉽습니다.

 

version3은 뭔

deploy에 그 밑에 resources에 그 밑에 limits에서... 할당해야 하는데

나중가면 오히려 그게 json depth가 깊어지니 키 값으로 찾을때는 편할 수는 있겠네요.

자원에 관련한 키를 통해서 조회를 하니까요?

 

 

메모리 제한도 비슷합니다.

 

메모리 제한 보러가기 : https://gmyankee.tistory.com/233

 

docker compose memory limit / 도커 컴포즈 메모리 제한

https://gmyankee.tistory.com/232 docker compose cpu limit / 도커 컴포즈 cpu 제한 Docker Container를 사용하다보면 다중 컨테이너를 사용하게 되는 경우가 빈번합니다. 예로 들면, 하나의 사이트를 만들다보..

gmyankee.tistory.com

 

 

728x90