Linux VMware机器上的Docker:apt-get和proxy出错

时间:2018-02-15 14:26:21

标签: docker proxy vmware apt

我有一台带有linux mint 18.3的VMware机器(主机是Windows 10)。主机在代理后面。客户机(linux mint)网络配置为“Bridged”?

我尝试在来宾操作系统上编写一个简单的Dockerfile并构建它但是有apt-get命令的问题:

FROM ubuntu:xenial 

RUN apt-get update && apt-get install -y \
  bzip2 \
  g++ \
  make \
  ncurses-dev \
  wget \
  zlib1g-dev

它给了我:

  

错误:1 http://security.ubuntu.com/ubuntu xenial-security InRelease         临时故障解决'security.ubuntu.com'

我尝试添加Dockerfile:

ENV http_proxy 'http://proxy_adress:3128'
ENV https_proxy 'http://proxy_adress:3128'

并收到此错误:

  

错误:1 http://security.ubuntu.com/ubuntu xenial-security InRelease         临时故障解决'proxy_adress'

我是否必须更改VMware配置中的某些内容?或者在Dockerfile中?

由于

3 个答案:

答案 0 :(得分:0)

在构建时不需要向Dockerfile添加ENV:在docker构建期间,唯一需要代理的是docker守护程序。

请参阅" Control Docker with systemd",特别是" HTTP/HTTPS proxy"

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

Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporatio

其次是:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

Verify that the configuration has been loaded:

$ systemctl show --property=Environment docker
Environment=HTTP_PROXY=http://proxy.example.com:80/

答案 1 :(得分:0)

这与dns服务器有关。

尝试将默认dns服务器发送到另一个服务器,例如:114.114.114.114:

sed -i 's/\(nameserver\) .*/\1 114.114.114.114/' /etc/resolv.conf

答案 2 :(得分:0)

您的容器似乎无法解析代理的主机名。因此,在构建容器时,请传递以下附加参数:

--dns=IP_ADDRESS...

这样做:

  

将添加为名称服务器行的IP地址设置为容器的/etc/resolv.conf文件。当遇到不在/ etc / hosts中的主机名时,容器中的进程将连接到端口53上的这些IP地址,以寻找名称解析服务。

来源:https://docs.docker.com/v17.09/engine/userguide/networking/default_network/configure-dns/