docker配置国内源和代理,以及如何让容器通过代理上网

docker配置国内源和代理,以及如何让容器通过代理上网

Gemini_Generated_Image_txc5cvtxc5cvtxc5.png

阅读原文

建议阅读原文,始终查看最新文档版本,获得最佳阅读体验:《docker配置国内源和代理,以及如何让容器通过代理上网》

https://alidocs.dingtalk.com/i/nodes/4lgGw3P8vRmaK2mGcddjar9b85daZ90D

配置docker镜像仓库和代理

参考资料:Daemon proxy configuration | Docker Docs

我发现直接用docker拉取镜像会失败,如下图:

image.png

为了解决网络的问题,我想着可以设置代理,需要注意的是,docker有自己的代理设置,并不是在linux系统中设置就行了

特别注意:如果同时配置镜像仓库和代理,则中间的逗号不要忘记加,否则重启docker服务时会报错

下面的这个方法,只是让docker能通过代理拉取镜像,容器并不会通过代理上网,若想要让容器通过代理上网,一般是要在运行容器时,添加环境变量,详情请看:《docker配置国内源和代理,以及如何让容器通过代理上网》

sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.m.daocloud.io",
        "https://docker.1panel.dev",
        "https://registry.dockermirror.com"
    ],
    "proxies": {
      "http-proxy": "http://<此处替换为你的代理服务器ip和端口号>",
      "https-proxy": "http://<此处替换为你的代理服务器ip和端口号>",
      "no-proxy": "fe80::/10,::1/128,10.0.0.0/8,192.168.0.0/16,127.0.0.1,172.16.0.0/12,.svc,localhost,.dltornado2.com,.security.ubuntu.com,.aliyuncs.com"
  }
}


EOF
sudo systemctl restart docker

但是我发现仍然无法正常拉取镜像,如下图:

image.png

代理服务器配置肯定没有问题,我用另外一台Windows虚拟机,是可以正常代理上网的。

终极解决方案:

我发现我把"https-proxy": "https://<此处替换为你的代理服务器和端口号>",改为"https-proxy": "http://<此处替换为你的代理服务器和端口号>",  就正常了

关键是https-proxy的值,是http而不是https

sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
  "proxies": {
      "http-proxy": "http://<此处替换为你的代理服务器和端口号>",
      "https-proxy": "http://<此处替换为你的代理服务器和端口号>",
      "no-proxy": "localhost,127.0.0.1"
  }
}
EOF
sudo systemctl restart docker

速度很快,比用免费的容器镜像加速器要快

image.png

image.png

让容器通过代理上网

有时候我们想要让容器也能通过代理上网,比如有些情况下,容器需要访问github、Google网站等等,国内访问要么不稳定,要么完全无法访问。

很简单,只需要添加环境变量即可。下面是一个示例:

注意:即使在/etc/environment文件中添加相应的环境变量,容器仍然不会通过代理上网,必须要像下面的示例命令所示,运行docker容器时,指定有关的环境变量,才能使得容器通过代理上网

docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -e GENERIC_TIMEZONE="Asia/Shanghai" \
  -e TZ="Asia/Shanghai" \
  -e N8N_SECURE_COOKIE=false \
  -e N8N_HOST=n8n.dltornado2.com \
  -e N8N_RUNNERS_ENABLED=true \
  -e http_proxy="http://<此处替换为你的代理服务器和端口号>" \
  -e https_proxy="http://<此处替换为你的代理服务器和端口号>" \
  -e no_proxy="fe80::/10,::1/128,10.0.0.0/8,192.168.0.0/16,127.0.0.1,172.16.0.0/12,.svc,localhost,.dltornado2.com,.security.ubuntu.com,.aliyuncs.com" \
  -e HTTP_PROXY="http://<此处替换为你的代理服务器和端口号>" \
  -e HTTPS_PROXY="http://<此处替换为你的代理服务器和端口号>" \
  -e NO_PROXY="fe80::/10,::1/128,10.0.0.0/8,192.168.0.0/16,127.0.0.1,172.16.0.0/12,.svc,localhost,.dltornado2.com,.security.ubuntu.com,.aliyuncs.com" \
  -v n8n_data:/home/node/.n8n \
  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/n8nio/n8n:1.101.2

关于作者和DreamAI

https://docs.dingtalk.com/i/nodes/Amq4vjg890AlRbA6Td9ZvlpDJ3kdP0wQ?iframeQuery=utm_source=portal&utm_medium=portal_recent

关注微信公众号“AI发烧友”,获取更多IT开发运维实用工具与技巧,还有很多AI技术文档!

梦幻智能logo-01(无水印).png

posted @ 2025-09-09 14:56  iamtornado  阅读(540)  评论(0)    收藏  举报