Docker 서비스가 항상 호스트에 할당된 RAM을 모두 사용하는 것을 중지하려면 어떻게 해야 합니까?

Docker 서비스가 항상 호스트에 할당된 RAM을 모두 사용하는 것을 중지하려면 어떻게 해야 합니까?

Windows 10의 Docker 서비스는 항상 할당이 허용된 최대 메모리 양을 사용하는 것 같습니다. 예를 들어, 리소스 -> 고급 섹션에서 메모리를 2GB에서 8GB로 늘리고 "적용 및 다시 시작"을 클릭하면 작업 관리자에서 이런 일이 발생했습니다.

여기에 이미지 설명을 입력하세요

도커가 메모리를 모두 씹어먹는 대신, 실행 중인 컨테이너에 필요한 경우에만 메모리를 사용하도록 하려면 어떻게 해야 합니까?

현재 실행 중인 컨테이너는 없고 서비스만 실행되고 있습니다.

답변1

Docker는 전체 하드웨어 가상화와 다르지만 여전히 동일한 방식과 동일한 이유로 작동합니다.

하이퍼바이저는 OS에 이 메모리를 요청할 필요 없이 필요할 때 하이퍼바이저와 컨테이너(또는 가상 머신)가 이 메모리를 사용할 수 있도록 주어진 양의 메모리를 예약합니다.

귀하가 설정한 설정은 특별히 이 목적을 위한 것이며, 바로 이러한 이유 때문에 관찰한 방식으로 정확하게 작동합니다. 이는 버그가 아니며 동작 방식을 변경하는 것은 Docker의 기본 동작을 다시 작성하는 것입니다.

따라서 아무 것도 깨지지 않고 모든 것이 정상적으로 작동합니다.

방법과 이유를 더 잘 이해하려면 Docker의 메모리 예약을 읽어 보시기 바랍니다. Docker는 성숙한 제품이며 잘 문서화되어 있다고 가정합니다.

발생한 문제를 "해결"하려면 더 많은 메모리를 설치하거나 Docker 메모리 요구 사항을 더 신중하게 계획하고 이 설정을 지금처럼 변덕스럽게 사용하는 것이 아니라 설계된 대로 사용하십시오.

답변2

WSL2 백엔드를 사용하여 최신 버전의 Docker Desktop을 실행하면 이 문제가 해결됩니다. 나 자신도 잘 이해하지 못하기 때문에 이보다 더 자세한 내용을 제공할 수는 없지만 WSL2를 설치했는데 이제 docker가 메모리를 동적으로 할당하는 것을 확인했습니다.

Docker Desktop은 WSL 2의 동적 메모리 할당 기능을 사용하여 리소스 소비를 크게 향상시킵니다. 즉, Docker Desktop은 필요한 양의 CPU 및 메모리 리소스만 사용하는 동시에 컨테이너 구축과 같은 CPU 및 메모리 집약적인 작업을 훨씬 빠르게 실행할 수 있습니다.

원천:Docker 데스크톱 WSL 2 백엔드

관련 정보