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,其表示使用内置默认值。 文件中缺少的设置也使用内置默认值。

设置 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。

其他资源