如何在部分隔离的主机上的docker容器中运行yum?

时间:2016-03-15 15:13:58

标签: docker yum http-proxy docker-networking

我的机器位于半隔离网络上。我必须使用代理连接到互联网。我已经验证了在我的主机上,在设置了http_proxy环境变量后,我可以从公共yum存储库接收更新。

现在我想在我的机器上的docker容器中做同样的事情,但它似乎不起作用。

$docker run --rm -it --net=host rhel /bin/bash
[root@MyCont] http_proxy=http://myproxy:1234/
[root@MyCont] echo -e "[base] \nname=CentOS-7 - Base - centos.com\nbaseurl=http://mirror.centos.org/centos/7/os/\$basearch/\ngpgcheck=1\ngpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7" > /etc/yum.repos.d/CentOS7-Base-centos.repo \
&& yum clean all \
&& yum install -y openssh-server  openssh-clients

我在主机网络模式下启动了我的容器,所以我假设我应该在容器中拥有与主机相同的网络堆栈。因此,如果我正确设置http_proxy,我应该在容器内外具有相同的yum行为。

是否可以在主机位于需要http_proxy访问yum的半隔离网络的docker容器中运行yum?

2 个答案:

答案 0 :(得分:0)

您应该在构建中的图像中安装软件

因此在你的dockerfile中使用yum install

然而,如果由于某种原因你需要在容器内yum那么....

docker run -e http_proxy=http://10.9.2.2:8080

请注意,如果yum install无效,请尝试...

yum update

首先 - 由于某种原因,这有帮助!

也使用......

docker exec -it containerName bash

进入容器,然后尝试执行你的yum命令。根据需要导出任何代理env变种。

答案 1 :(得分:0)

就像danday74所说,你必须使用' 导出 https_proxy = http ...'。 在我的环境中工作。为了安全起见,我导出了http_proxy和https_proxy。

相关问题