Docker 构建 centos 容器 Dockerfile 中使用 yum 命令报错问题

报错信息

  Loaded plugins: fastestmirror, ovl
    Determining fastest mirrors
    Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was
    14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

    One of the configured repositories failed (Unknown),
     and yum doesn't have enough cached data to continue. At this point the only
     safe thing yum can do is fail. There are a few ways to work "fix" this:
    
         1. Contact the upstream for the repository and get them to fix the problem.
    
         2. Reconfigure the baseurl/etc. for the repository, to point to a working
            upstream. This is most often useful if you are using a newer
            distribution release than is supported by the repository (and the
            packages for the previous distribution release still work).
    
         3. Run the command with the repository temporarily disabled
                yum --disablerepo=<repoid> ...
    
         4. Disable the repository permanently, so yum won't use it by default. Yum
            will then just ignore the repository until you permanently enable it
            again or use --enablerepo for temporary usage:
    
                yum-config-manager --disable <repoid>
            or
                subscription-manager repos --disable=<repoid>
    
         5. Configure the failing repository to be skipped, if it is unavailable.
            Note that yum will try to contact the repo. when it runs most commands,
            so will have to try and fail each time (and thus. yum will be be much
            slower). If it is a very temporary problem though, this is often a nice
            compromise:
    
                yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
    
    Cannot find a valid baseurl for repo: base/7/x86_64

原因及解决方法

原因一

所操作的服务器无法访问互联网,可以尝试 ping 下公网,比如 ping www.baidu.com,查看是否有响应,如果没有反应,先调整服务器网络问题。如果宿主机本身网络没有问题,可能是容器网络有问题,可以尝试调整容器网络为host:

docker build --network=host -f Dockfile -t mycentos:latest .

原因二

Centos镜像的版本停止了维护,可以在Dockerfile中加入一下内容:

RUN cd /etc/yum.repos.d/

RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*

RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* 

RUN yum makecache

RUN yum update -y

原帖地址:https://juejin.cn/post/7393314542070775817

标签: none

添加新评论