前言

最近遇到 Docker Desktop 构建 node 项目时,由于网络问题导致的构建失败问题,本文将介绍两个给 Docker Desktop 设置网络代理的方法。

修改 WSL2 配置

为了测试代理的效果,这里创建一个go服务,代码很简单,就是访问 https://www.google.com/ 并返回结果。如果能正常访问,说明代理设置成功。

package main

import "net/http"

func main() {
	resp, err := http.Get("https://www.google.com/")
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	println(resp.Status)
}

第一种方法是修改 WSL2 的配置,在 windows C:\Users<your_username> 目录下创建 .wslconfig 文件,输入以下内容:

[experimental]
autoMemoryReclaim=gradual  
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

然后重启 WSL: wsl --shutdown

networkingMode 为mirrored 表示网络模式使用镜像模式,会镜像宿主机的网络设置,能更好的集成宿主机和WSL的网络。

autoProxy 开启了自动代理的功能,意味 WSL 自动配置代理设置。

配置好,我们构建 Docker 镜像,运行:

wsl2配置

可以看到代理成功生效,可以正常访问。

接下来介绍通过修改 Docker Desktop 的配置文件,设置代理。

修改 Docker Desktop 配置

打开 Docker Desktop 的设置,找到 Resources Proxies 选项,设置代理。

alt text

运行 Docker 镜像,可以看到代理成功生效,可以正常访问。

小结

本文介绍了两种给 Docker Desktop 设置网络代理的方法,分别是修改 WSL2 配置和修改 Docker Desktop 配置。

参考