百胜更新失败-Centos 7 - dockerbuild

时间:2018-04-11 16:03:09

标签: docker docker-compose centos7 yum

我经常使用centos 7作为基本图像构建docker容器。但是现在我跑步时遇到了错误,

RUN yum update add \
    bash \
    && rm -rfv /var/cache/apk/*

ERROR:
Loaded plugins: fastestmirror, ovl

其中一个已配置的存储库失败(未知),  并且yum没有足够的缓存数据来继续。此时唯一  百胜可以做的安全事情就是失败。有几种方法可以解决"修复"这样:

  1. 联系上游的存储库并让他们解决问题。

  2. 重新配置baseurl / etc.对于存储库,指向工作 上游。如果您使用的是更新版本,这通常很有用 分发版本比存储库支持(和 以前的发行版的软件包仍然可用。)

  3. 运行暂时禁用存储库的命令     yum --disablerepo=<repoid> ...

  4. 永久禁用存储库,因此默认情况下yum不会使用它。百胜 然后,只有在您永久启用它之前,才会忽略该存储库 再次使用--enablerepo进行临时使用:

    yum-config-manager --disable <repoid>
    

    `subscription-manager repos --disable=<repoid>`
    
  5. 配置要跳过的故障存储库(如果不可用)。 请注意,yum将尝试联系回购。当它运行大多数命令时, 因此每次都必须尝试失败(因此,yum会很多 慢点)。如果这是一个非常短暂的问题,这通常很好 折衷:

    yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
    
  6.   

    无法为repo找到有效的baseurl:base / 7 / x86_64无法检索   镜像列表   http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container   错误是14:卷曲#6 - &#34;无法解析主机:mirrorlist.centos.org;   姓名或服务未知&#34;命令&#39; / bin / sh -c yum update添加
      bash&amp;&amp; rm -rfv / var / cache / apk / *&#39;返回非零代码:1

    我也看到了几个使用的决议&#34; dhclient&#34;但是当我做docker-compose build时会发生这个错误。

3 个答案:

答案 0 :(得分:0)

我的假设是,由于某种原因,docker中的网络行为因分布而异。

尝试使用:

docker run -d --net mybridge centos

docker network create -d bridge mybridge docker run -d --net mybridge centos

应该开始工作了。或者只需编辑/etc/hosts并添加镜像地址

Name: mirrorlist.centos.org Address: 67.219.148.138

答案 1 :(得分:0)

我遇到了这个问题,试图在两个不同的平台上运行相同的Dockerfile,并使用yum来获取多个软件包。一个macOS,另一个基于Ubuntu 16.04的Linux OS(elementaryOS Loki),都使用docker.com上的官方软件包。

我的理论是,从安全角度而言,Linux软件包比macOS软件包更具限制性。也许可以使用某种/etc/something配置文件来配置,但是我不确定Docker的专业知识。 编辑:请参见下面的评论。< / p>

可以说的是,在macOS(10.11 El Capitan)上我不需要其他配置;只是docker build .工作正常,并且yum的{​​{1}}进程能够访问所有远程存储库。

但是,在源自Ubuntu的Linux发行版中,有必要使用

Dockerfile

之后

docker build --network host .

当我想在该图像中运行需要访问互联网的进程时。

其他Debian衍生系统也可能是这种情况。

在允许长时间运行的Docker容器不受限制地通过主机网络适配器进行通信时,当然需要考虑安全性,并且最好回顾一下the appropriate documentation,注意。

答案 2 :(得分:0)

此问题的根本原因是,容器代理设置错误。只需更正以下位置的代理设置即可。

/root/.docker/config.json