我的机器位于半隔离网络上。我必须使用代理连接到互联网。我已经验证了在我的主机上,在设置了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?
答案 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。