Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- HashMap
- 도커
- 스프링부트
- 스타트업
- IntelliJ
- 프로그래머스
- 해시맵
- bfs
- dfs
- 코딩테스트
- Linux
- 주니어
- docker
- 개발자
- HTTP
- 문자열
- 백엔드
- spring boot
- 명령어
- 구현
- 배열
- 인텔리제이
- 스프링 부트
- spring
- 이직
- Java
- 자료구조
- 스프링
- 구름LEVEL
- 해결
Archives
- Today
- Total
마이의 개발 블로그
[Linux] cgroups를 사용해 도커 사용 자원 제한하기 본문
반응형
배경
지정된 사양에서의 부하테스트를 위해 도커가 사용하는 로컬머신의 코어와 메모리를 제한할 필요가 있었습니다. 하나의 도커 컨테이너만 동작시킨다면 실행 옵션에 명령어를 사용하는 방법도 있겠습니다만, 10개 이상의 도커 컨테이너가 도커 컴포즈로 동작하는 상황이었기 때문에 자원을 유동적으로 공유해서 사용해야하므로 OS에서 도커에게 할당하는 자원을 제한하는 편이 낫다고 판단했습니다. 여기서는 cgroups 명령어를 통해 도커 사용 자원을 제한하는 방법을 소개하고자 합니다.
cgroups 명령어를 통해 도커 사용 자원을 제한하는 방법
1. cgroups 디렉토리 생성(디렉토리명: docker_limit)
sudo cgcreate -g memory,cpu:/docker_limit
2. CPU, 메모리 제한 설정 추가
// CPU 제한: 4코어
sudo cgset -r cpu.cfs_period_us=100000 /docker_limit // CPU 주기
sudo cgset -r cpu.cfs_quota_us=400000 /docker_limit // CPU 사용량 제한
// 메모리 제한: 16GB
sudo cgset -r memory.limit_in_bytes=$((16 * 1024 * 1024 * 1024)) /docker_limit
3. 도커 데몬에 cgroup 사용 설정 추가
sudo systemctl edit docker
아래 내용과 같이 cgroup 관련 실행 옵션 추가 후 저장
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=cgroupfs --cgroup-parent=/docker_limit
4. 도커 데몬 재시작
sudo systemctl daemon-reload
sudo systemctl restart docker
도커의 cgroups 설정 되돌리기
1. cgroups 현황 확인
// 명령어
sudo cgget -g memory,cpu:/docker_limit
// 결과 예시
memory.limit_in_bytes: 17179869184 // 메모리 제한(16GB)
memory.usage_in_bytes: 10485760 // 메모리 사용량
cpu.cfs_quota_us: 400000 // CPU 사용량 제한
cpu.cfs_period_us: 100000 // CPU 주기
2. 추가했던 cgroup 사용 설정 제거
sudo systemctl edit docker
아래 내용으로 변경 후 저장
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
3. 도커 데몬 재시작
sudo systemctl daemon-reload
sudo systemctl restart docker
반응형
'개발지식 > 인프라' 카테고리의 다른 글
[Network] Docker Compose와 Nginx를 이용한 수평 스케일(scale-out)과 로드 밸런싱(Load Balancing) (0) | 2024.12.10 |
---|---|
[Docker] 도커(Docker) 삭제 후 도커 네트워크 인터페이스를 삭제해야하는 경우 명령어(RHEL 8.8) (0) | 2024.11.22 |
[Linux] 도커(Docker) 동작 중 firewalld를 켜면 서비스가 동작하지 않는 현상(RHEL 8.8) (0) | 2024.11.22 |
[Linux] tcpdump로 로컬 서버에서 외부로 나가는 모든 요청(request) 확인하기 (0) | 2024.09.24 |
[Docker] 자주 사용하는 도커 명령어 모음 (0) | 2024.06.13 |
Comments