你可以使用位於 %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。