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

如何为WSL2中的单个发行版配置镜像网络模式

如何为WSL2中的单个发行版配置镜像网络模式

我完全懂你的需求——想让默认的WSL2发行版用上镜像网络模式,其他发行版保持原来的NAT模式,还要解决Docker Desktop里Nginx容器绑定80端口和IIS冲突的问题。咱们一步步来解决:

一、为单个WSL2发行版配置指定网络模式

首先得确保你的WSL是最新版本,不然可能不支持单个发行版的网络配置。打开PowerShell,先执行:

wsl --update

更新完成后,先确认所有发行版的名称:

wsl -l -v

输出里带*的就是默认发行版。

设置默认发行版为镜像模式

针对你的默认发行版,执行下面的命令(把<默认发行版名称>换成实际名称,比如Ubuntu):

wsl --configure <默认发行版名称> --networking-mode mirrored

让其他发行版保持NAT模式

对于其他需要保留NAT的发行版,同样用命令配置:

wsl --configure <其他发行版名称> --networking-mode nat

设置完后,可以重启对应的发行版生效:

wsl --terminate <发行版名称>

二、解决Docker Desktop容器端口冲突问题

因为镜像网络模式下,WSL和主机共享网络栈,Docker容器绑定的端口会直接映射到主机上,所以才会出现Nginx绑定80端口和IIS冲突的情况。这里有两个实用的解决办法:

方法1:修改容器端口映射

最直接的方式就是在启动容器时,把容器的80端口映射到主机的其他空闲端口(比如8080)。举个例子:

docker run -d -p 8080:80 nginx

这样你访问主机的http://localhost:8080就能访问到容器里的Nginx,不会和IIS的80端口冲突。

方法2:调整Docker Desktop的网络设置

如果你希望Docker容器整体不和主机共享网络栈,可以这样操作:

  • 打开Docker Desktop,点击右上角的设置图标
  • 切换到「Resources」→「WSL Integration」
  • 只开启默认发行版的WSL集成(也就是用镜像模式的那个),其他发行版的集成可以关掉——这样其他发行版里的Docker容器会使用自己的NAT网络,不会占用主机端口
  • 或者在「Network」设置里,确保Docker使用独立的bridge网络,避免和主机网络栈直接共享

这样调整后,Docker容器的端口就不会直接绑定到主机上,自然就不会和IIS冲突了。

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

火山引擎 最新活动