0

如何配置 docker 容器代理?

首先,

我尝试使用设置'/etc/systemd/system/docker.service.d/http-proxy.conf'的方式(https://docs.docker.com/config/daemon/systemd/#httphttps-proxy)它确实适用于 docker 守护进程,但不适用于 docker 容器,似乎这种方式只对像“docker pull”这样的命令生效

中学,

我有很多 docker 容器,我不想每次启动容器时都使用 'docker run -e http_proxy=xxx...' 命令。

所以我猜如果有这样一种方式在容器启动时自动加载全局配置文件,我google了一下,让它设置文件'~/.docker/config.json'(如何配置docker容器代理?,这个方式仍然对我不起作用。

(我的主机系统是centos7,这里是我的docker -v: Docker version 1.13.1, build 6e3bb8e/1.13.1)

感觉可能和我的docker版本或者systemd服务启动的docker有关,所以~/.docker/config.json没有生效。

最后 ,

我只是希望修改配置文件能让我所有的容器在启动时自动配置环境变量(即容器时自动设置环境变量'http_proxy= http://HostIP:8118 https_proxy= http://HostIP:8118 '开始,如 Dockerfile 参数 ENV) 。我想知道有没有这样的方法?而且如果能实现这种方式我可以让容器使用宿主机的代理,毕竟我宿主机的代理是正常工作的。

但我错了,我试图运行一个容器,然后设置 http_proxy= http://HostIP:8118和 https_proxy= http://HostIP:8118,但是当我使用命令'wget facebook.com'时,我得到了' Connecting to HostIP:8118... failed: No route to host.',但是,主机(centos7)可以成功执行wget,并且我可以成功ping容器中的主机。我不知道为什么它可能与防火墙和 8118 端口有关。

结束了,

OMG ..我没有其他办法,有人可以帮助我吗?

===============================

ps:从下面的截图可以看出,我其实是想安装goa和goagen却报错,可能是网络原因,想打开代理试试,所以……只有上面的问题。

1.my go docker container 在这里输入图片描述

去码头工人 wget

2.我的主机

我的主机 wget

4

1 回答 1

1

您需要 17.07 或更高版本才能自动将代理传递给您使用 config.json 文件开始的容器。1.13 版本早已不再支持。

这在 docker 中有很好的记录: https ://docs.docker.com/network/proxy/

于 2018-12-29T11:44:41.027 回答