일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- minikube
- 정보처리기사 실기
- Spring
- 정보처리기사실기 기출문제
- kotlin querydsl
- 티스토리챌린지
- APM
- 오블완
- 공부
- Java
- kotlin coroutine
- 정보처리기사 실기 기출문제
- 코틀린 코루틴의 정석
- Pinpoint
- mysql 튜닝
- MySQL
- kotlin spring
- Kubernetes
- IntelliJ
- AI
- aws
- kotlin
- Linux
- CloudWatch
- CKA 기출문제
- CKA
- Elasticsearch
- AWS EKS
- PETERICA
- 기록으로 실력을 쌓자
- Today
- Total
피터의 개발이야기
[Docker] Docker에서 CPU 및 메모리 제한 설정 본문
ㅁ 개요
Docker 호스트 시스템에서 리소스 사용을 제한해야 하는 경우가 많습니다. 이번 글에서는 Docker 컨테이너의 메모리 및 CPU 제한을 설정하는 방법을 정리하였습니다.
ㅁ 메모리 제한하기
$ docker run -m 512m nginx
ㅇ 컨테이너가 사용할 수 있는 메모리를 512MB로 제한합니다.
$ docker run -m 512m --memory-reservation=256m nginx
ㅇ 예약이라는 소프트 제한을 설정할 수도 있습니다.
ㅇ docker가 호스트 시스템의 메모리가 부족한 경우를 대비하여 예약 활성화를 할 수 있습니다.
ㅁ CPU 제한하기
ㅇ 기본적으로 호스트 시스템의 컴퓨팅 성능에 대한 액세스는 무제한입니다.
ㅇ CPUs 매개변수를 사용하여 CPU 제한을 설정할 수 있습니다.
$ docker run --cpus=2 nginx
ㅇ 2개의 CPU를 사용하도록 컨테이너를 제한합니다.
$ docker run --cpus=2 --cpu-shares=2000 nginx
ㅇ CPU 할당 우선순위를 지정할 수도 있습니다.
ㅇ 기본값은 1024이며 숫자가 높을수록 우선순위가 높습니다
ㅇ 메모리 예약과 유사하게 CPU 공유는 컴퓨팅 성능이 부족하고 경쟁 프로세스 간에 나누어야 할 때 주요 역할을 합니다.
ㅁ docker-compose 파일을 사용하여 메모리 제한 설정
ㅇ docker-compose 파일을 사용하여 비슷한 결과를 얻을 수 있습니다.
ㅇ docker-compose 버전에 따라 형식과 가능성이 달라질 수 있습니다.
1) 버전 3 이상 (docker swarm 포함)
services:
service:
image: nginx
deploy:
resources:
limits:
cpus: 0.50
memory: 512M
reservations:
cpus: 0.25
memory: 128M
ㅇ Nginx 서비스 제한은 CPU 절반과 512MB 메모리, 예약은 CPU 1/4과 128MB 메모리로 제한하겠습니다.
ㅇ 서비스 구성에서 배포 세그먼트를 생성 한 다음 리소스 세그먼트를 생성해야 합니다.
$ docker stack deploy --compose-file docker-compose.yml bael_stack
ㅇ Swarm에 스택을 배포하기 위해 배포 명령을 실행합니다.
2) 버전 2 docker-compose 사용
service:
image: nginx
mem_limit: 512m
mem_reservation: 128M
cpus: 0.5
ports:
- "80:80"
ㅇ 이전 버전의 docker-compose에서는 서비스의 기본 속성과 동일한 수준에 리소스 제한을 설정할 수 있습니다.
ㅇ 그리고 이름이 약간 다릅니다.
$ docker-compose up
ㅇ 구성된 컨테이너를 생성하려면 docker-compose 명령을 실행합니다.
ㅁ 리소스 사용량 확인
ㅇ 제한을 설정한 후 docker stats 명령을 사용하여 이를 확인할 수 있습니다.
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
e826af5f7208 desktop-jenkins_agent-1 0.49% 188.4MiB / 7.667GiB 2.40% 114MB / 162MB 53.4MB / 23.8MB 41
e705755fae9e jenkins-docker-jenkins_controller-1 1.14% 2.703GiB / 7.667GiB 35.26% 133MB / 139MB 2.06MB / 213MB 62
ㅁ 함께 보면 좋은 사이트
'DevOps > Docker' 카테고리의 다른 글
Docker 파일복사 | 폴더복사 (로컬 - 컨테이너) (2) | 2023.12.07 |
---|---|
[Docker] 트러블슈팅 - err: exec: "docker-credential-osxkeychain" (0) | 2023.10.25 |
[Docker] 자동완성 설정하기(zsh, MacOS), Insecure completion-dependent directories detected 해결 (0) | 2023.08.10 |
[Docker] Docker 기본 명령어 정리 (0) | 2023.08.10 |
[Docker] docker login 시 User interaction is not allowed 문제 해결 (0) | 2023.08.05 |