You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WSL2中为Docker Desktop与Ubuntu实例单独配置内存、处理器及交换空间的方法咨询

WSL2中为Docker Desktop与Ubuntu实例单独配置内存、处理器及交换空间的方法咨询

好的,针对你的问题,其实WSL2是支持为每个单独实例单独配置资源限制的,之前你遇到的困惑主要是对两种配置文件的作用范围理解有误——wsl.conf并不负责资源分配的控制,内存、CPU、交换空间这类资源限制完全由Windows用户目录下的.wslconfig文件管理,而且我们可以在这个文件里为每个实例单独设置专属规则,完美解决你担心Ubuntu抢占Docker资源的问题。

下面是具体的操作步骤:

1. 先停止所有WSL实例(包括Docker Desktop)

修改配置后需要重启所有WSL实例才能生效,首先运行以下命令彻底关闭所有WSL相关进程:

wsl --shutdown

此时Docker Desktop也会被关闭,之后我们再重新启动它即可。

2. 编辑/创建.wslconfig文件

这个文件位于Windows的用户目录下,路径是 C:\Users\<你的用户名>\.wslconfig(如果没有就新建一个纯文本文件,重命名为.wslconfig,注意去掉.txt后缀)。

在文件中按照INI格式编写全局默认配置和每个实例的专属配置,示例如下:

# 全局默认配置:如果某个实例没有单独配置,就会使用这里的规则
[wsl2]
memory=2GB       # 默认每个实例最多用2GB内存
processors=2     # 默认最多用2核CPU
swap=1GB         # 默认交换空间1GB

# 针对Docker Desktop实例的专属配置(名称要和`wsl -l -v`里的完全一致)
[docker-desktop]
memory=8GB       # 给Docker分配8GB内存
processors=4     # 给Docker分配4核CPU
swap=4GB         # 给Docker分配4GB交换空间

# 针对你的Ubuntu实例的专属配置
[Ubuntu]
memory=4GB       # Ubuntu最多用4GB内存
processors=2     # Ubuntu最多用2核CPU
swap=2GB         # Ubuntu的交换空间2GB

⚠️ 注意:实例名称必须和wsl -l -v输出的名称完全一致(包括大小写),比如你的Ubuntu实例显示为Ubuntu,就必须写[Ubuntu],不能写成小写的[ubuntu]

3. 验证配置是否生效

完成配置后,重新启动Docker Desktop(它会自动启动自己的WSL实例),然后手动启动Ubuntu实例:

wsl -d Ubuntu

分别进入两个实例验证资源配置:

  • 在Ubuntu实例中:运行free -h查看内存和交换空间,运行nproc查看可用CPU核数。
  • 在Docker Desktop实例中:先运行wsl -d docker-desktop进入实例,再用同样的命令free -hnproc验证资源限制是否生效。

关键说明

  • Docker Desktop界面中的资源设置,本质上就是修改.wslconfig里的[docker-desktop]块配置,所以如果你手动修改了.wslconfig,再在Docker界面里调整资源,会覆盖你手动写的配置,建议统一用一种方式管理。
  • docker-desktop-data实例主要用于存储Docker镜像和数据,一般不需要单独配置资源,它的资源占用很少,重点配置docker-desktop实例即可。
  • 配置生效后,每个实例的资源限制是独立的,Ubuntu最多只会使用你指定的资源,不会抢占Docker分配到的资源,完全不用担心互相影响的问题。

备注:内容来源于stack exchange,提问作者tgkprog

火山引擎 最新活动