跳到主要内容

4 篇博文 含有标签「wsl」

查看所有标签

使用 wsl 版的 docker desktop

· 阅读需 1 分钟
1adybug
子虚伊人

如果在内网安装 docker desktop,那么 docker desktop 会强制要求升级 wsl,否则无法使用。只需要修改 docker desktop 的配置文件:

// C:\Users\用户名\AppData\Roaming\Docker\setting-store.json
{
// 添加这一行
"WslUpdateRequired": false
}

windows 版本的 docker desktop

· 阅读需 1 分钟
1adybug
子虚伊人

之前为了便于 wsl 中的系统直接使用 windows 的代理,我将 wsl 的网络模式都设置为了 mirrored,这样就导致了无法使用 ip 访问 docker 中的应用,所以必须将网络模式设置为 NAT,这样就可以通过 ip 访问 docker 中的应用了。

[wsl2]
# 注释掉或者改为 NAT
# networkingMode=mirrored
networkingMode=NAT

关闭 wsl,然后重启 docker desktop,这样就可以通过 ip 访问 docker 中的应用了。

wsl --shutdown

WSL 网络设置

· 阅读需 1 分钟
1adybug
子虚伊人

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 使设置生效。

获取 windows 在 wsl 中的 ip

· 阅读需 1 分钟
1adybug
子虚伊人

有时我们需要在 wsl 中与 windows 进行通信,比如设置代理之类,可以通过以下方式获取到 windows 的 ip:

在终端中输入:

ipconfig

带有 vEthernet (WSL (Hyper-V firewall)) 字段的适配器便是 wsl 所在的网络,ip 地址便是 windows 的 ip。

当然,有时候我可能会发现在 wsl 中无法访问到 windows 的服务,大概率是防火墙的问题,可以尝试关闭防火墙,或者新增一个入站规则,允许 wsl 访问 windows 的端口。

  1. 打开 Windows Defender
  2. 点击 防火墙和网络保护
  3. 点击 高级设置
  4. 点击 入站规则
  5. 点击 新建规则
  6. 选择 端口
  7. 选择 特定本地端口
  8. 输入 windows 的 ip 和端口
  9. 点击 确定

这样就可以在 wsl 中访问到 windows 的 ip 了。