使用 wsl 版的 docker desktop
如果在内网安装 docker desktop,那么 docker desktop 会强制要求升级 wsl,否则无法使用。只需要修改 docker desktop 的配置文件:
// C:\Users\用户名\AppData\Roaming\Docker\setting-store.json
{
// 添加这一行
"WslUpdateRequired": false
}
如果在内网安装 docker desktop,那么 docker desktop 会强制要求升级 wsl,否则无法使用。只需要修改 docker desktop 的配置文件:
// C:\Users\用户名\AppData\Roaming\Docker\setting-store.json
{
// 添加这一行
"WslUpdateRequired": false
}
之前为了便于 wsl 中的系统直接使用 windows 的代理,我将 wsl 的网络模式都设置为了 mirrored,这样就导致了无法使用 ip 访问 docker 中的应用,所以必须将网络模式设置为 NAT,这样就可以通过 ip 访问 docker 中的应用了。
[wsl2]
# 注释掉或者改为 NAT
# networkingMode=mirrored
networkingMode=NAT
关闭 wsl,然后重启 docker desktop,这样就可以通过 ip 访问 docker 中的应用了。
wsl --shutdown
wsl 默认使用的是 NAT 模式的网络,无法直接访问外部网络,可以通过修改 wsl 的网络设置,将其设置为 mirrored,使其能够直接访问外部网络。
在 C:\Users\用户名 目录下创建 .wslconfig 文件,内容如下:
[wsl2]
networkingMode=mirrored
在 wsl 中查看网络配置:
ifconfig
如果 ip 地址已经和主机在同一个网段,那么网络设置已经生效。
重启 wsl 使设置生效:
wsl --shutdown
代理可能需要重新设置,或者重启代理软件或者主机
如果要在 NAT 模式下使用 clash 代理,可以参考 获取 Windows 在 wsl 中的 ip 这篇文章
vi ~/.bashrc
在 ~/.bashrc 文件中添加以下内容:
export http_proxy=http://172.30.160.1:7890
export https_proxy=http://172.30.160.1:7890
export all_proxy=http://172.30.160.1:7890
export HTTP_PROXY=http://172.30.160.1:7890
export HTTPS_PROXY=http://172.30.160.1:7890
export ALL_PROXY=http://172.30.160.1:7890
重启终端,或者执行 source ~/.bashrc 使设置生效。
有时我们需要在 wsl 中与 windows 进行通信,比如设置代理之类,可以通过以下方式获取到 windows 的 ip:
在终端中输入:
ipconfig
带有 vEthernet (WSL (Hyper-V firewall)) 字段的适配器便是 wsl 所在的网络,ip 地址便是 windows 的 ip。
当然,有时候我可能会发现在 wsl 中无法访问到 windows 的服务,大概率是防火墙的问题,可以尝试关闭防火墙,或者新增一个入站规则,允许 wsl 访问 windows 的端口。
Windows Defender防火墙和网络保护高级设置入站规则新建规则端口特定本地端口windows 的 ip 和端口确定这样就可以在 wsl 中访问到 windows 的 ip 了。