可以通过位于 %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,其表示使用内置默认值。 文件中缺少的设置也使用内置默认值。
| 设置 | 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 |
会话 VM 变为空闲后在关闭前保持运行的秒数。 必须大于 0。 |
credentialStore |
wincred 或 file |
wincred |
存储来自 wslc login 的容器注册表凭据的位置。
wincred使用Windows凭据管理器。
file 在 %LOCALAPPDATA%\wslc\registry-credentials.json 处使用 DPAPI 加密的文件。 |
大小值为一个整数,后跟一个可选单位:B、、/KKB、/MBM、GB/G、TBT/或P/PB(不区分大小写)。 单位为二进制,因此 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。