共用方式為


容器記憶體概觀

本主題提供容器在 Windows 上使用記憶體的不同方式概觀。 容器在記憶體方面的行為與虛擬機不同。 容器本質上是建置的,以防止應用程式在主機檔系統上寫入狀態。 容器預設會使用「臨時」空間,但 Windows 也提供保存記憶體的方法。

暫存空間

Windows 容器預設會使用暫時記憶體。 所有容器的 I/O 都會在「臨時空間」中進行,而每個容器都會取得自己的臨時空間。 檔案建立和檔案寫入會在臨時空間中記錄,而不會傳送到主機。 當容器實例停止時,會丟棄在暫存區中發生的所有變更。 啟動新的容器實例時,會為實例提供新的臨時空間。

層次記憶體

容器概觀所述,容器映像是一組以一系列圖層表示的檔案。 分層記憶體是容器內建的所有檔案。 每次您對該容器執行 docker pulldocker run,它都保持相同狀態。

儲存層次的位置及變更方式

在預設安裝中,圖層會儲存在 C:\ProgramData\docker 中,並分割到「image」和「windowsfilter」目錄。 您可以使用 docker-root 組態來變更儲存圖層的位置,如 Windows 上的 Docker 引擎文檔中所述。

注意

層次記憶體僅支援NTFS。 不支援 ReFS 和叢集共用磁碟區 (CSV)。

您不應該修改層次目錄中的任何檔案 ─ 這些檔案會使用下列命令進行仔細管理:

層記憶體中支援的作業

執行中的容器可以使用大部分的NTFS作業,但交易除外。 這包括設定存取控制清單(ACL),而且會在容器內檢查所有的 ACL。 如果您想要以容器內的多個使用者身分執行進程,您可以使用 RUN net user /create ...Dockerfile 中建立使用者、設定檔案 ACL,然後使用 Dockerfile USER 指示詞,設定進程以使用該使用者執行。

永續性記憶體

Windows 容器支援透過綁定掛載和磁碟區提供永久儲存的機制。 若要深入瞭解,請參閱 容器中的永續性記憶體

記憶體限制

Windows 應用程式的常見模式是先查詢可用磁碟空間量,再安裝或建立新檔案,或做為清除暫存盤的觸發程式。 為了將應用程式相容性最大化,Windows 容器中的 C: 磁碟驅動器代表 20 GB 的虛擬可用大小。

某些使用者可能會想要覆寫此預設值,並將可用空間設定為較小的或較大的值。 這可以透過 「storage-opt」 組態內的 「size」 選項來完成。

命令行:docker run --storage-opt "size=50GB" mcr.microsoft.com/windows/servercore:ltsc2019 cmd

或者,您可以直接變更 Docker 組態檔:

"storage-opts": [
    "size=50GB"
  ]

提示

此方法也適用於 Docker 組建。 如需修改 docker 組態檔的詳細資訊,請參閱 設定 docker 檔。