容器儲存體概觀

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

臨時空間

Windows 容器預設會使用暫時儲存體。 所有容器 I/O 都會在「臨時空間」進行,且每個容器都會取得其自己的臨時空間。 檔案建立和檔案寫入會在臨時空間進行擷取,而不會逸出到主機。 如果容器執行個體已停止,則會擲回在臨時空間發生的所有變更。 啟動新的容器執行個體後,就會為該執行個體提供新的臨時空間。

分層儲存體

容器概觀所述,容器映像是以一系列圖層表示的檔案組合。 分層儲存體是所有內建於容器中的檔案。 每次 docker pull 然後 docker run 該容器,兩者相同。

分層儲存的位置,以及如何變更

在預設安裝中,分層儲存在 C:\ProgramData\docker 中並分散至 "image" 和 "windowsfilter" 目錄中。 您可以使用 docker-root 組態來變更分層儲存的位置,如 Windows 上的 Docker 引擎文件所示範。

注意

分層儲存體僅支援 NTFS, 不支援 (CSV) 的 ReFS 和叢集共用磁片區。

您不應該修改分層目錄中的任何檔案 - 使用以下命令謹慎管理檔案:

分層儲存體支援的作業

執行中的容器可使用除交易外的大部分 NTFS 作業, 包括設定 ACL,而且所有 ACL 都是在容器內檢查。 如果您想要在容器中以多個使用者執行處理序,您可以在 Dockerfile 中使用 RUN net user /create ... 建立使用者,設定檔案 ACL,然後使用 Dockerfile USER 指示詞,設定處理序以該使用者執行。

永續性儲存體

Windows 容器支援透過繫結裝載和磁碟區來提供永續性儲存體的機制。 若要深入了解,請參閱容器中的永續性儲存體

儲存體限制

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

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

範例

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

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

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

提示

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