WSL 容器設定

你可以使用位於 %LOCALAPPDATA%\wslc\settings.yaml 的每位使用者 YAML 設定檔,自訂 wslc.exe 如何執行容器,例如容器工作階段可使用多少 CPU 和多少記憶體。

打開設定檔

設定檔預設不存在。 要建立它並用於 .yaml 檔案的預設編輯器開啟它(如果沒有相關聯的編輯器,則用記事本),請執行:

wslc settings

第一次執行這個指令時,wslc 會建立一個檔案,其中所有設定皆已被註解掉,並設為 default。 取消註解一行,然後將 default 替換為你的值來變更設定。 要再次以註解掉的預設值覆寫該檔案,請執行:

wslc settings reset

以下為範例 settings.yaml 檔案:

session:
  cpuCount: 4
  memorySize: 8GB
  maxStorageSize: 500GB
  storagePath: D:\data
  defaultBindingAddress: 127.0.0.1
  hostLoopback: host.wslc.internal
  idleTimeout: 60

可用的設定

每個設定都接受值 default,該值會使用內建預設值。 檔案中缺少的設定也會使用內建的預設設定。

Setting Value 預設 Description
session.cpuCount number 所有邏輯處理器 分配給容器會話的虛擬處理器數量。 必須大於 0。
session.memorySize size Windows 上總記憶體的 50% 指派給容器工作階段的最大記憶體量,例如 8GB。
session.maxStorageSize size 1TB 儲存會話映像與容器的虛擬磁碟(VHDX)最大容量,例如 500GB。
session.storagePath 路徑 %LOCALAPPDATA% 預設會話儲存空間的絕對基礎目錄。 虛擬磁碟建立於 <storagePath>\wslc\sessions\<session>\storage.vhdx。
session.defaultBindingAddress IPv4 位址 127.0.0.1 當您使用 wslc container run -p 但未指定位址時,已發佈連接埠所繫結的主機位址。 設定為 0.0.0.0 綁定所有主機介面。
session.hostLoopback 字串 host.wslc.internal 容器可用來連線到 Windows 主機的 DNS 名稱。 設定為 none 以停用此名稱。
session.idleTimeout number 30 會話虛擬機在閒置後持續運行的秒數,然後才會關閉。 必須大於 0。
credentialStore wincred 或 file wincred 來自 wslc login 的容器登錄憑證儲存在何處。 wincred使用Windows憑證管理器。 file 使用位於 %LOCALAPPDATA%\wslc\registry-credentials.json 的 DPAPI 加密檔案。

大小值為整數,後接一個可選單位:B、PMBT、GB//、TB/K、KBPB/,或 M/G(不區分大小寫)。 單位採二進位制,因此 1GB 為 1024 MB。 沒有單位的值會解讀為位元組,最小值為 1 MB。

Note

如果工作階段已存在,變更 session.storagePath 並不會移動現有的映像檔、容器或儲存空間。 先前的儲存空間會保留,並在新位置建立一個新的空工作階段。

變更生效時

  • 容器會話開始時讀取會話設定session.*()。 如果已經有工作階段正在運行,請用 wslc system session terminate 停止它,這樣下一個 wslc 指令就會啟動一個新的工作階段,並使用你更新的設定。 一個會話在閒置 session.idleTimeout 秒後也會自動關閉。
  • session.defaultBindingAddress 和 credentialStore 會在每次執行 wslc 指令時被讀取。

若設定檔包含未知設定、無效值或無效 YAML值, wslc 則會列印包含檔案路徑與行號的警告,並使用受影響設定的內建預設值。

Note

這些設定適用於 wslc.exe 使用的工作階段。 設定 .wslconfig 不適用於 WSL 容器。 使用 WSL 容器 API 的應用程式會在程式碼中自行設定其工作階段,例如使用 SessionSettings。

其他資源