最近我在使用Docker時遇到了一個奇怪的問題,即Docker代理不生效,無法訪問外網。
我在Dockerfile中添加了代理,如下所示:
ENV http_proxy http://proxy.example.com:8080/
ENV https_proxy https://proxy.example.com:8080/
同時在啟動容器時也添加了代理:
docker run --env http_proxy=http://proxy.example.com:8080/ \
--env https_proxy=http://proxy.example.com:8080/ \
myimage
然而,在容器內執行如下命令時,代理不生效:
curl https://www.google.com
經過查看Docker日志,發現容器內無法解析代理地址,導致代理不生效。
為了解決該問題,我需要在Docker宿主機中配置代理,而不是在容器內配置。
具體步驟如下:
- 在宿主機的/etc/systemd/system/docker.service.d/目錄下創建http-proxy.conf文件:
- 重新加載配置文件:
- 重啟Docker服務:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
sudo systemctl daemon-reload
sudo systemctl restart docker
經過以上步驟,我再次啟動容器并執行curl命令,代理成功生效,可以正常訪問外網了。
總結一下,若Docker代理不生效,需要在宿主機中配置代理,而不是在容器內配置。