10.附录 Docker Desktop 代理

一、先确认一个关键点(很重要)

Docker Desktop 在 Windows / macOS 上:

[!NOTE]
❗ 它不是“系统自动走代理”,必须在 Docker Engine 或 Desktop 设置里单独配置

另外:

  • 127.0.0.1:10808​ 是本机代理
  • Docker Desktop 运行在 WSL2/Hyper-V VM 内部
  • 👉 所以 不能直接写 127.0.0.1(大多数情况会失败)

二、正确做法(推荐方案)

✅ 方法1:Docker Desktop GUI 设置代理(最简单)

步骤:

  1. 打开 Docker Desktop
  2. 进入:
1
Settings → Resources → Proxies

或新版:

1
Settings → Proxies
  1. 勾选:
  • ✔ Manual proxy configuration
  1. 填入:
项目
HTTP Proxy http://host.docker.internal:10808
HTTPS Proxy http://host.docker.internal:10808

⚠️ 关键点

必须用:

1
host.docker.internal

不能用:

1
127.0.0.1 ❌(容器里不是宿主机)

5. Apply & Restart Docker

必须重启 Docker Desktop


三、方法2(更稳):配置 Docker Engine JSON

适用于 GUI 不生效情况

打开:

1
Settings → Docker Engine

加入:

1
2
3
4
5
6
7
8
9
{
"proxies": {
"default": {
"httpProxy": "http://host.docker.internal:1080",
"httpsProxy": "http://host.docker.internal:1080",
"noProxy": "localhost,127.0.0.1"
}
}
}

然后点击:

👉 Apply & Restart


四、Clash / V2Ray 必须开启的设置

如果你用 Clash:

1. 开启允许局域网访问

1
allow-lan: true

2. 监听地址必须是:

1
0.0.0.0

或:

1
0.0.0.0:1080

否则 Docker 访问不到。


五、测试代理是否成功(重点)

方法1:用 curl 测试

运行容器:

1
docker run --rm curlimages/curl -I https://www.google.com

如果代理成功,会看到:

1
HTTP/2 200

或正常返回 header


方法2:测试 GitHub

1
docker run --rm curlimages/curl https://github.com

成功表现:

  • 不超时
  • 正常返回 HTML

失败表现:

  • timeout
  • Could not resolve host

方法3:进入容器测试环境变量

1
docker run --rm alpine env | grep -i proxy

如果成功,会看到:

1
2
http_proxy=http://host.docker.internal:1080
https_proxy=http://host.docker.internal:1080

方法4:拉镜像测试(最真实)

1
docker pull nginx

或:

1
docker pull node:alpine

如果速度明显提升 = 代理成功


六、常见问题(重点排坑)

❌ 1. 127.0.0.1 不能用

原因:

  • Docker VM 内部访问的是自己,不是宿主机

✔ 用:

1
host.docker.internal

❌ 2. 10808 端口连不上

检查 Clash:

  • 是否开启 allow-lan
  • 是否监听 0.0.0.0

❌ 3. Docker pull 还是慢

可能原因:

  • 代理只配置了容器,没有配置 Docker daemon

👉 需要同时配置 Engine proxy


❌ 4. DNS 仍然慢

可以加:

1
"dns": ["8.8.8.8", "1.1.1.1"]

七、推荐最佳配置(稳定版)

1
2
3
4
5
6
7
8
9
10
{
"proxies": {
"default": {
"httpProxy": "http://host.docker.internal:1080",
"httpsProxy": "http://host.docker.internal:1080",
"noProxy": "localhost,127.0.0.1"
}
},
"dns": ["8.8.8.8", "1.1.1.1"]
}

八、一句话总结

✔ Docker Desktop 代理正确姿势:

[!NOTE]
host.docker.internal:10808
开启 allow-lan
测试用 curl 或 docker pull