Yum 更新失败 -Centos 7 - dockerbuild

Jon*_*han 3 yum docker centos7 docker-compose

我经常使用 centos 7 作为基础映像构建 docker 容器。但是现在我运行时出错,

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

ERROR:
Loaded plugins: fastestmirror, ovl
Run Code Online (Sandbox Code Playgroud)

配置的存储库之一失败(未知),并且 yum 没有足够的缓存数据来继续。在这一点上,yum 唯一可以做的安全事情就是失败。有几种方法可以“修复”这个问题:

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

  2. 重新配置 baseurl/etc。对于存储库,指向一个工作上游。如果您使用的分发版本比存储库支持的版本更新(并且先前分发版本的包仍然有效),这通常很有用。

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

  4. 永久禁用存储库,因此 yum 默认不会使用它。然后 Yum 将忽略存储库,直到您再次永久启用它或--enablerepo用于临时使用:

    yum-config-manager --disable <repoid>
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    `subscription-manager repos --disable=<repoid>`
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果失败的存储库不可用,则将其配置为跳过。请注意,yum 将尝试联系 repo。当它运行大多数命令时,因此每次都必须尝试并失败(因此 yum 会慢得多)。如果这是一个非常暂时的问题,这通常是一个很好的折衷方案:

    yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
    
    Run Code Online (Sandbox Code Playgroud)

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

我还看到很少有使用“dhclient”的解决方案,但是当我执行 docker-compose 构建时会发生此错误。

The*_*des 7

我在尝试运行相同的 时遇到了这个问题Dockerfile,它使用yum, 在两个不同的平台上获取了几个软件包;一个 macOS,另一个基于 Ubuntu 16.04 的 Linux 操作系统(elementaryOS Loki),两者都使用来自 docker.com 的官方软件包。

我的理论是,Linux 软件包在安全方面比 macOS 软件包更具限制性。也许这可以使用某种/etc/something配置文件进行配置,但我没有 Docker 的专业知识可以肯定地说。 编辑:见我下面的评论。

可以说的是,我在 macOS (10.11 El Capitan) 上不需要额外的配置;刚刚docker build .工作的罚款,并yum从工艺Dockerfile能够达到所有远程存储库。

然而,在 Ubuntu 衍生的 Linux 发行版中,有必要使用

docker build --network host .
Run Code Online (Sandbox Code Playgroud)

其次是

docker run -it --network host <image> <command>
Run Code Online (Sandbox Code Playgroud)

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

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

当然,在允许长时间运行的 Docker 容器通过主机网络适配器进行通信时需要考虑安全因素,不受限制,最好查看这方面的适当文档