Proxy 在公司代理的后面有个码头工人

Proxy 在公司代理的后面有个码头工人,proxy,dns,docker,virtualbox,apt-get,Proxy,Dns,Docker,Virtualbox,Apt Get,我正试图用Docker在公司代理服务器后面建立一个开发环境。尽管我可能会尝试,但我无法让docker容器与代理服务器通信 代理服务器和apt在主机Ubuntu12.04上运行良好 Dockerfile中完成的第一件事是尝试设置代理变量: FROM ubuntu RUN echo 'Acquire::http { Proxy "http://my.proxy.net:8000"; };' >> /etc/apt/apt.conf.d/01proxy ENV HTTP_PROXY htt

我正试图用Docker在公司代理服务器后面建立一个开发环境。尽管我可能会尝试,但我无法让docker容器与代理服务器通信

代理服务器和apt在主机Ubuntu12.04上运行良好

Dockerfile中完成的第一件事是尝试设置代理变量:

FROM ubuntu
RUN echo 'Acquire::http { Proxy "http://my.proxy.net:8000"; };' >> /etc/apt/apt.conf.d/01proxy
ENV HTTP_PROXY http://my.proxy.net:8000
ENV http_proxy http://my.proxy.net:8000
ENV HTTPS_PROXY https://my.proxy.net:8000
ENV https_proxy https://my.proxy.net:8000
RUN apt-get update && apt-get install -y build-essential
它会很好地拉取图像,设置变量,但当它得到apt get update时,会尝试一段时间,然后失败:

W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/InRelease  
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/InRelease  
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-security/InRelease  
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg  Could not resolve 'my.proxy.net'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-updates/Release.gpg  Could not resolve 'my.proxy.net'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/trusty-security/Release.gpg  Could not resolve 'my.proxy.net'
W: Some index files failed to download. They have been ignored, or old ones used instead.
我设置的这些变量与主机linux安装一致(如果需要的话,VirtualBox上的Ubuntu 12.04)

我还为/etc/default/docker设置了:

export http_proxy="http://my.proxy.net:8000"
export http_proxy="https://my.proxy.net:8000"
有什么想法吗

更新:

看起来这是DNS的问题,不一定是代理服务器的问题。host/etc/resolve.conf包含:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search dhcp.mycompany.com

主机是一个运行在Windows7机器上的virtualbox虚拟机,我发现了各种半生不熟的解决方案,这些解决方案似乎大多不起作用。无论我怎么做,我都无法让它解析代理服务器的主机名,在以下几条注释之后:

  • 确保为HTTPS\u代理使用http url
  • 在中使用小写代理变量
  • 在中使用这两种情况下的代理变量(在我的情况下,它在中)
  • 在所有情况下,设置一个
    no_proxy
    /
    no_proxy
    变量(到
    .company.sock,localhost,127.0.0.1,::1
  • 如果代理请求身份验证,请不要忘记在代理url中包含凭据

问题最终出现在DNS上。Docker在Ubuntu上运行,Ubuntu本身就是VirtualBox上的来宾操作系统。由于它自己的病毒化混乱,它在resolv.conf中分配了127.0.0.1的名称服务器

发生这种情况时,Docker将为自己分配一个8.8.8.8的DNS名称服务器(google的名称服务器),因为localhost指的是Docker容器,而不是主机

为了解决这个问题,我一路跑到Windows并运行

ipconfig /all

并获得了我的笔记本电脑DNS服务器的IP地址。我用--dns=my.dns.ip.address将这些添加到配置文件中的DOCKER_OPTS中,并重新启动了DOCKER,我为通过代理而采取的其他措施效果良好。

除了上述解决方案之外,我们还可以在容器中执行以下操作,以便使用apt get进行安装

在VM中,安装docker后,使用后台代理设置在容器中运行图像

docker run-it ubuntu:14.04

apt获取并安装wget

此命令将无法从apt get中提取包,为此,请使用下面的命令

docker run-it--net=host ubuntu:14.04

导出http\u proxy=“代理:端口”


apt get install wget

如果您是在防火墙后面构建,则必须使用Docker 1.9.x构建参数

在不使用生成参数的情况下生成Dockerfile失败并阻塞,如下所示:

3b0d8aa7c417: Pull complete
Digest: sha256:dc31e6056d314218689f028b51a58b2ca69b1dfdc5f33ead52b9351e9a19ee85
Status: Downloaded newer image for nodesource/trusty:4.2.3
 ---> e17bee681d8f
Step 2 : RUN apt-get update
 ---> Running in bdaf0006ccbd
Apt在此处获取块,因为它与archive.ubuntu.com没有连接。。。您可以通过运行映像来验证

# docker run -ti --net=host --rm nodesource/trusty:4.2.3 bash
root@pppdc9prd9rj:/usr/src/app# apt-get update
0% [Connecting to archive.ubuntu.com (91.189.92.201)]^C
root@pppdc9prd9rj:/usr/src/app# ping archive.ubuntu.com
PING archive.ubuntu.com (91.189.91.24) 56(84) bytes of data.
^C
--- archive.ubuntu.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms
使用build arg解决了这个问题

# docker build -t migrator --build-arg http_proxy=$HTTP_PROXY .

arg http_proxy=$HTTP_PROXY .
Sending build context to Docker daemon 3.333 MB
Step 1 : FROM nodesource/trusty:4.2.3
 ---> e17bee681d8f
Step 2 : RUN apt-get update
 ---> Running in 019b32d09a77
Ign http://archive.ubuntu.com trusty InRelease
Get:1 http://archive.ubuntu.com trusty-updates InRelease [65.9 kB]
Get:2 http://archive.ubuntu.com trusty-security InRelease [65.9 kB]
Get:3 http://archive.ubuntu.com trusty Release.gpg [933 B]
Get:4 http://archive.ubuntu.com trusty Release [58.5 kB]
Get:5 http://archive.ubuntu.com trusty-updates/main Sources [326 kB]
Get:6 http://archive.ubuntu.com trusty-updates/restricted Sources [5217 B]
Get:7 http://archive.ubuntu.com trusty-updates/universe Sources [1

在用http URL更改https代理后为我工作。先生,你是个救星。