我有一台半隔离网络的机器。我必须使用代理连接到互联网。我已经验证了在我的主机上,在设置了http_proxy环境变量之后,我可以从public yum repository接收更新。
现在我想在我的机器上的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行为。
是否有可能在一个docker容器中运行yum,该容器的主机位于需要http_proxy访问yum的半隔离网络上?
您应该在构建中的图像中安装软件
因此在你的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变种。
就像danday74所说,你必须使用'export https_proxy = http ...'。在我的环境中工作。为了安全起见,我导出了http_proxy和https_proxy。