Docker Ubuntu背后的代理

时间:2014-10-24 14:47:01

标签: docker

查看文档,没有关于如何在代理后面运行它的说明。 https://docs.docker.com/installation/ubuntulinux/

在论坛上阅读,说明是更新/ etc / default / docker以导出代理设置。

 export http_proxy="http://127.0.0.1:3128/"
 export https_proxy="http://127.0.0.1:3128/"
 export HTTP_PROXY="http://127.0.0.1:3128/"
 export HTTPS_PROXY="http://127.0.0.1:3128/"

然后我们重启/启动docker

 sudo service docker start

在容器内部,如果我运行'apt-get',npm install,bower install我无法通过代理。

不确定我错过了什么。

7 个答案:

答案 0 :(得分:131)

Ubuntu 14.04 LTS

对于使用Ubuntu 14.04 LTS的{​​{1}},您应该修改SysVinit文件:

/etc/default/docker

然后重新启动# cat /etc/default/docker # Docker Upstart and SysVinit configuration file # # THIS FILE DOES NOT APPLY TO SYSTEMD # # Please see the documentation for "systemd drop-ins": # https://docs.docker.com/engine/articles/systemd/ # ....... # If you need Docker to use an HTTP proxy, it can also be specified here. export http_proxy="http://web-proxy.corp.xxxxxx.com:8080/" export https_proxy="https://web-proxy.corp.xxxxxx.com:8080/" ......

docker

Ubuntu 16.04 LTS / Ubuntu 18.04 LTS

对于使用service docker restart 的{​​{1}},您可以按照post进行操作:

(1)创建systemd插件目录:

Ubuntu 16.04 LTS

(2)在Systemd文件中添加代理:

mkdir /etc/systemd/system/docker.service.d

(3)同花顺变化:

/etc/systemd/system/docker.service.d/http-proxy.conf

(4)重启Docker:

# cat /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=https://web-proxy.corp.xxxxxx.com:8080/"
Environment="HTTPS_PROXY=https://web-proxy.corp.xxxxxx.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,localaddress,.localdomain.com"

Official Reference

答案 1 :(得分:25)

对于Ubuntu 14.04.2 LTS Linux vagrant-ubuntu-trusty-64 3.13.0-54-generic #91-Ubuntu SMP Tue May 26 19:15:08 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

编辑您/etc/default/docker文件

sudo vim /etc/default/docker

在底部添加此行:

export http_proxy="http://PROXY_IP:PROXY_PORT"

重新启动docker服务

sudo service docker restart

答案 2 :(得分:7)

您可以尝试在/etc/environment中添加行:

https_proxy="http://127.0.0.1:3128"
http_proxy="http://127.0.0.1:3128"
ftp_proxy="http://127.0.0.1:3128"
no_proxy="127.0.0.1/8, localhost, 192.168.0.0/16"

它将对您的Linux系统上的所有服务有用

然后编辑/lib/systemd/system/docker.service。 在[Service]部分的末尾,添加以下行:

EnvironmentFile=/etc/environment

然后:

sudo systemctl daemon-reload
sudo systemctl restart docker.service

答案 3 :(得分:4)

系统安装必须安装,这可能会有问题。 如果/etc/systemd/system/docker.service.d/http-proxy.conf或/ etc / default / docker解决方案不适合您,只需使用以下命令:

docker build [OPTIONS] PATH --build-arg http_proxy=http://your.proxy:port --build-arg https_proxy=http://your.proxy:port --build-arg no_proxy=.internal.domain,localhost,127.0.0.1

答案 4 :(得分:2)

在Ubuntu 14.04 LTS中:

有关HTTP_PROXY的一个有趣问题,HTTPS_PROXY是:如果您的密码有一个特殊的字符,如“$”,“%”,那么当您执行以下命令时,docker守护程序将无法正确处理它:dock run xxx ,你会遇到错误。然后你可以尝试将特殊字符设置给其他人,祝你好运。

答案 5 :(得分:1)

根据Docs

添加到~/.docker/config.json代理配置

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://127.0.0.1:3001",
     "noProxy": "*.test.example.com,.example2.com"
   }
 }
}

答案 6 :(得分:0)

您应该将127.0.0.1替换为您的主机IP或某些公共可访问IP