如果我把这篇文章发布到了错误的部分,我深感抱歉,我需要一些帮助,但不知道该向谁求助。
我正在尝试在 Linux/ubuntu 服务器机器上的代理后面运行 docker。我已经配置了机器上的每个代理(FTP/HTTPS/HTTP),还配置了此处提到的 Docker 代理:https://docs.docker.com/config/daemon/systemd/#httphttps-proxy和https://stackoverflow.com/a/28093517/4261713
但是,我已将 docker 服务设置为在机器启动时自动启动,除非我登录机器并运行,否则sudo service docker restart
这些设置将被忽略,docker 无法使用代理。这一切都很好,我们有一个本地访问的解决方法,但我需要使用自动构建/部署等远程使用此机器。因此,如果不运行该命令,构建就会中断。
不幸的是,我无法从 Docker 支持部门获得任何帮助,我已经等了大约 3 周,他们却没有回复。这个问题很可能是我不了解 Linux 服务/守护进程。有人能帮我吗?
为了确认我已经尝试过的方法:
我已经在 /etc/systemd/system/docker.service.d 中创建了 http-proxy.conf,并在那里为代理创建了环境变量。
"DOCKER_OPTS"
我曾尝试通过在顶部添加变量来修改 docker 服务 init.d 文件-e "HTTP_PROXY=http://addressofproxy:portofproxy" -e "HTTPS_PROXY=http://addressofproxy:portofproxy"
,但是,这也没有什么区别,我仍然需要在重新启动后重新启动服务!我还设置/配置了客户端配置
~/.docker/config.json
以使用代理。
非常感谢任何帮助,我完全不明白为什么它不会在启动时读取选项。
答案1
在运行 systemd 的操作系统上,您可以尝试添加:/etc/systemd/system/docker.service.d/http-proxy.conf
内容:
[Service] Environment="HTTP_PROXY=http://proxy:3128/" "HTTPS_PROXY=http://proxy:3128/" "NO_PROXY=localhost,127.0.0.1"
然后
systemctl daemon-reload systemctl restart docker