build dockerfile问题记录

Dockerfile

项目场景:

在centos8使用docker build生成镜像


问题描述:

编写如下dockerfile

FROM centos
MAINTAINER jeffreyzhou<xxxxx@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

出现如下报错:

Step 5/10 : RUN yum -y install vim
 ---> Running in 8d007e8556aa
CentOS-8 - AppStream                            0.0  B/s |   0  B     02:00    
Errors during downloading metadata for repository 'AppStream':
  - Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=container [Could not resolve host: mirrorlist.centos.org]
Error: Failed to download metadata for repo 'AppStream': Cannot prepare internal mirrorlist: Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=container [Could not resolve host: mirrorlist.centos.org]
The command '/bin/sh -c yum -y install vim' returned a non-zero code: 1

原因分析:

从报错看出无法访问http://mirrorlist.centos.org/,但是该地址能够ping通
目前尚未找到具体原因
但是用网上换源的方法可以解决


解决方案:

centos8使用的是mirrorlist来配置repo源,通过mirrorlist指向一个存放镜像地址列表的url地址。
但是这里无法访问该url地址,所以可以修改为baseurl来配置repo源。

由于CentOS 8主要使用AppStream, BaseOS, Extras三个仓库,所以在这里主要配置上面三个仓库对应的配置文件,这里的三个仓库可以理解为同一个软件源中保存了不同种类软件的不同部分。

具体修改如下:
在/etc/yum.repos.d下找到CentOS-AppStream.repo、CentOS-Base.repo、CentOS-Extras.repo三个文件,用编辑器做如下修改:
CentOS-AppStream.repo

修改前:
name=CentOS-$releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
修改后:
name=CentOS-$releasever - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
baseurl=https://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/

CentOS-Base.repo

修改前:
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
修改后:
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/

CentOS-Extras.repo

修改前:
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/extras/$basearch/os/
修改后:
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/extras/$basearch/os/
baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/

然后更新一下缓存

yum makecache

再重启一下docker

systemctl restart docker
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值