proxy - apt-get 在公司代理后面的 docker 中

标签 proxy dns docker virtualbox apt-get

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

代理服务器和 apt-get 在主机上正常工作,即 Ubuntu 12.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 的问题,不一定是代理服务器的问题。主机/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

主机是在 Windows 7 机器上运行的 virtualbox vm,我发现了各种半生不熟的解决方案,这些解决方案大多似乎都不起作用。无论我尝试什么,我都无法解析代理服务器的主机名

最佳答案

问题最终出在 DNS 上。 Docker 在 Ubuntu 上运行,Ubuntu 本身就是 VirtualBox 上的访客操作系统。由于它自己的虚拟化 mumbo jumbo,它在 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,我为通过代理而采取的其他措施工作正常。

关于proxy - apt-get 在公司代理后面的 docker 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29630480/

相关文章:

docker - Centos -- Yum 更新错误 - “HTTP Error 403 - Forbidden”

javascript - 创建通过客户端计算机路由的代理

dns - 如何在 OSX 中查看 DNS 缓存?

c# system.net.dns 通用应用程序 (W10) 不工作

reactjs - 部署到 DigitalOcean 时 GitHub 操作失败

java - Guice:将接口(interface)绑定(bind)到动态代理创建的实例

java - 在 Android 中访问自动代理 URL?

dns - 如何将域名映射到托管服务器

docker - "docker run"位于已安装卷中的命令

docker - 如何使 docker container ls -f name 按确切名称过滤?