이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 7160|회답: 5

도커는 컨테이너의 CPU, 메모리 및 기타 자원을 수정하고 제한합니다

[링크 복사]
게시됨 2022. 8. 6. 오후 1:55:37 | | | |
요구사항: 도커 컨테이너를 생성할 때 -m 매개변수를 추가하여 컨테이너의 최대 메모리 사용량을 제한할 수 있습니다.

컨테이너 메모리 제한 검토

호스트 머신은 8G 메모리 스틱을 설치하고 3개의 컨테이너를 생성하는데, 이 중 itsvse-redis 컨테이너의 최대 메모리는 5억 12M로 제한되며, 나머지 두 개의 컨테이너는 아래 그림에서 볼 수 있습니다:



출력 정보 형식에 대한 상세 설명

[컨테이너]: 컨테이너 ID를 짧은 형태로 표시합니다.
CPU %: CPU 사용량.
[메모리 사용량/한계]: 현재 사용 중인 메모리와 사용할 수 있는 최대 메모리.
[MEM %]: 메모리 사용량을 백분율로 표시합니다.
[NET I/O]: 네트워크 I/O 데이터.
[블록 I/O]: 디스크 I/O 데이터.
[PIDS]:P 신분증 번호.

Docker update 명령어

docker update 명령어는 컨테이너 구성을 동적으로 업데이트합니다. 이 명령어를 사용하면 컨테이너가 도커 호스트에서 너무 많은 자원을 소비하지 않도록 할 수 있습니다. 단일 명령어로 단일 또는 여러 컨테이너에 제한을 설정할 수 있습니다. 여러 컨테이너를 지정하려면, 공백으로 구분된 컨테이너 이름이나 ID 목록을 제공하세요.

옵션 설명

이름
묘사
--블키오-웨이트
IO(상대 가중치) 차단, 10에서 1000 사이, 0은 비활성화되어 있습니다(기본 억제)
--CPU 기간
CPU CFS(완전 공정 스케줄러) 지속 시간 제한
--CPU-쿼터
CPU CFS(완전 공정 스케줄러) 할당량을 제한하세요
--CPU-RT-마침표
CPU 실시간 시간을 마이크로초로 제한하는 API 1.25+
--CPU-RT-런타임
CPU 실시간 실행 시간을 마이크로초로 제한하는 API 1.25+
--CPU-shares, -c
CPU 점유율(상대적 가중치)
--CPU
API 1.29+, CPU 수
--CPU셋-CPU
허용 CPU (0-3,0,1)
--cpuset-mem
허용된 MEM (0-3,0,1)
--커널-메모리
커널 메모리 한계
--메모리 스왑
스왑 제한은 메모리와 스왑을 더한 값이며, 무제한 스왑을 가능하게 하려면 "-1"
--메모리-저장소
메모리 소프트 리밋
--메모리, -m
메모리 제한
--피드 제한
API 1.40+, 컨테이너 PID 한도 조정 (-1은 무제한 기준)
--다시 시작할
컨테이너가 종료될 때 정책을 재시작해 적용하세요

문서조사:하이퍼링크 로그인이 보입니다.

php5-fpm 컨테이너를 제한한다고 가정해 봅시다최대 메모리 사용량 1024M (1G), 명령어는 다음과 같습니다:



(끝)




이전의:HTML5 PostMessage 창 간 통신
다음:[턴] 문장 Task.결과가 잠기는데, 이 코드를 어떻게 쓸 수 있겠어?
 집주인| 게시됨 2022. 8. 6. 오후 1:58:43 |
--memory-swap 매개변수를 설정하지 않으면 오류가 발생할 수 있습니다:

daemon의 오류 응답: 컨테이너 ae7884f515f96cadab65668d6a44e13bb899c1e7fd411abcc88577a79d4302a3: 메모리 제한은 이미 설정된 메모리스왑 제한보다 작아야 합니다, 메모리스왑을 동시에 업데이트하세요
 집주인| 게시됨 2022. 8. 6. 오후 2:31:57 |
리눅스는 look busy를 사용해 CPU 사용량을 시뮬레이션합니다
https://www.itsvse.com/thread-10260-1-1.html
게시됨 2022. 8. 6. 오후 3:52:44 |
배우기 위해 배우세요
 집주인| 게시됨 2023. 7. 1. 오후 9:46:50 |
Docker 메모리, CPU, GPU에 대한 런타임 옵션:하이퍼링크 로그인이 보입니다.

--메모리 스왑 세부 정보

--memory-swap은 --memory가 설정되어 있을 때만 의미가 있는 수정자 플래그입니다. 컨테이너가 모든 사용 가능한 RAM을 소진하면, 스왑을 통해 컨테이너가 초과 메모리 요구량을 디스크에 기록할 수 있습니다. 메모리를 자주 디스크로 스왑하는 애플리케이션의 경우 성능이 저하됩니다.

그 환경은 복잡한 영향을 미칠 수 있습니다:

--memory-swap이 양의 정수로 설정되어 있다면, 두 --메모리 모두 --memory-swap으로 설정해야 합니다. --메모리-스왑은 사용할 수 있는 메모리 및 스왑 존의 총 양을 나타내며, --메모리는 비스왑 존에서 사용되는 메모리 양을 제어합니다. 그러므로--memory="300m"과 --memory-swap="1g"이라면, 컨테이너는 300m 메모리와 700m (1g - 300m) 공간을 교환할 수 있습니다.

--memory-swap이 0으로 설정되어 있으면 이 설정은 무시되고 값은 설정되지 않은 것으로 간주됩니다.

--memory-swap이 --memory와 같은 값으로 설정되어 있고 --memory가 양의 정수로 설정되어 있다면, 컨테이너는 스왑에 접근할 수 없습니다。 컨테이너가 스왑을 사용하는 것을 방지하는 방법을 참조하세요.

--memory-swap이 설정되어 있지 않고 --memory가 설정되어 있다면, 컨테이너는 설정된 만큼 스왑 --메모리를 사용할 수 있습니다(호스트 컨테이너가 스왑 메모리로 구성되어 있을 경우). 예를 들어, --memory="300m"와 --memory-swap이 설정되어 있지 않으면, 컨테이너는 총 600m의 메모리와 스왑 공간을 사용할 수 있습니다.

--memory-swap이 명시적으로 -1로 설정되어 있으면, 컨테이너는 호스트 시스템에서 사용 가능한 횟수 내에서 무제한 스왑을 사용할 수 있습니다.

컨테이너 내부에서는 무료 도구들이 컨테이너 내에서 제공되는 교환 대신 호스트의 이용 가능한 교환을 보고합니다. 무료 또는 유사한 도구의 출력에 의존해 거래소가 존재하는지 판단하지 마세요.
 집주인| 게시됨 2024. 2. 16. 오전 4:07:22 |

--메모리 스왑이 설정되어 있지 않으면,-- 메모리는 다음 값으로 설정됩니다.--memory-swap 기본값은 --memory와 동일한 메모리를 사용할 수 있습니다예를 들어, 메모리-스왑=1G를 ,--하면 1G의 스왑 공간을 사용할 수 있고, 마지막으로 컨테이너는 2G의 메모리(--메모리 1G 공간 + --메모리 스왑 1G 공간)를 사용할 수 있습니다.

즉, --메모리가 설정되었을 때,-- 메모리 스왑은 총 메모리 한도로 이해할 수 있으며, 사용 가능한 스왑 공간은 메모리 스왑에서 메모리 뺀 값과 같습니다.

컨테이너 --memory-swap 구성을 다음 명령어로 살펴보세요:



"메모리": 536870912, // 512M=536870912/1024/1024/1024
"메모리예약": 0,
"메모리스왑": 1073741824, // 1G=1073741824/1024/1024/1024
"메모리스왑": null,

위 구성은 컨테이너가 메모리 --memory=512M을 제한하고, --memory-swap은 설정되지 않은 것입니다.
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com