
答案1
雖然 Docker 與全硬體虛擬化不同,但它的功能仍然有許多相同的方式,並且出於相同的原因。
虛擬機器管理程式保留給定量的內存,以便它們和容器(或虛擬機器)在需要時可以使用該內存,而無需向作業系統請求該內存。
您設定的設定專門用於此目的,其行為方式與您為此原因所觀察到的方式完全相同。它不是一個 bug,改變它的行為方式就是重寫 Docker 的基本行為。
因此,沒有任何問題,一切都按其應有的方式運作。
我強烈建議您閱讀 Docker 中的記憶體預留,以便更好地理解如何以及為什麼。 Docker 是一個成熟的產品,我認為有很好的文件記錄。
要「解決」您遇到的問題,請安裝更多內存或更仔細地規劃您的 Docker 內存需求,並按設計使用此設置,而不是像現在那樣隨心所欲。
答案2
使用 WSL2 後端運行較新版本的 docker Desktop 可以解決此問題。我無法提供比這更多的細節,因為我自己也不太了解它,但我已經安裝了 WSL2 並注意到 docker 現在動態分配記憶體。
Docker Desktop 使用 WSL 2 中的動態記憶體分配功能來大幅改善資源消耗。這意味著,Docker Desktop 僅使用所需的 CPU 和記憶體資源,同時使 CPU 和記憶體密集型任務(例如建置容器)運行得更快。