代理后面的 Docker 需要在启动时重新启动

代理后面的 Docker 需要在启动时重新启动

如果我把这篇文章发布到了错误的部分,我深感抱歉,我需要一些帮助,但不知道该向谁求助。

我正在尝试在 Linux/ubuntu 服务器机器上的代理后面运行 docker。我已经配置了机器上的每个代理(FTP/HTTPS/HTTP),还配置了此处提到的 Docker 代理:https://docs.docker.com/config/daemon/systemd/#httphttps-proxyhttps://stackoverflow.com/a/28093517/4261713

但是,我已将 docker 服务设置为在机器启动时自动启动,除非我登录机器并运行,否则sudo service docker restart这些设置将被忽略,docker 无法使用代理。这一切都很好,我们有一个本地访问的解决方法,但我需要使用自动构建/部署等远程使用此机器。因此,如果不运行该命令,构建就会中断。

不幸的是,我无法从 Docker 支持部门获得任何帮助,我已经等了大约 3 周,他们却没有回复。这个问题很可能是我不了解 Linux 服务/守护进程。有人能帮我吗?

为了确认我已经尝试过的方法:

  1. 我已经在 /etc/systemd/system/docker.service.d 中创建了 http-proxy.conf,并在那里为代理创建了环境变量。

  2. "DOCKER_OPTS"我曾尝试通过在顶部添加变量来修改 docker 服务 init.d 文件-e "HTTP_PROXY=http://addressofproxy:portofproxy" -e "HTTPS_PROXY=http://addressofproxy:portofproxy",但是,这也没有什么区别,我仍然需要在重新启动后重新启动服务!

  3. 我还设置/配置了客户端配置~/.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

相关内容