Docketfile文件
FROM centos
MAINTAINER mika
ENV path /home/mika
WORKDIR $path
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $path
CMD echo "---end---"
CMD /bin/bash
在执行构建时报错
Error: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist
根据报错信息找到关联问题: 链接:https://blog.csdn.net/xiaocao_debug/article/details/122807870
在2022年1月31日,CentOS团队终于从官方镜像中移除CentOS 8的所有包。 CentOS8已于2021年12月31日寿终正非,但软件包仍在官方镜像上保留了一段时间。现在他们被转移到https://vault.centos.org
简单点说,就是CentOS 8的rpm包已从原yum仓库地址移除,不再支持,但是这些包被转移到了https://vault.centos.org
解决方案: 知道了原因,就知道了解决方法,将默认得yum仓库地址修改为https://vault.centos.org即可 配置文件位于目录/etc/yum.repos.d下,下面是centos8的演示结果,centos7内容会不太一样。
[root@b8990d532e92 yum.repos.d]
/etc/yum.repos.d
[root@b8990d532e92 yum.repos.d]
.
|-- CentOS-Linux-AppStream.repo
|-- CentOS-Linux-BaseOS.repo
|-- CentOS-Linux-ContinuousRelease.repo
|-- CentOS-Linux-Debuginfo.repo
|-- CentOS-Linux-Devel.repo
|-- CentOS-Linux-Extras.repo
|-- CentOS-Linux-FastTrack.repo
|-- CentOS-Linux-HighAvailability.repo
|-- CentOS-Linux-Media.repo
|-- CentOS-Linux-Plus.repo
|-- CentOS-Linux-PowerTools.repo
`-- CentOS-Linux-Sources.repo
随便查看一个仓库配置,忽略注释,内容如下,
[root@b8990d532e92 yum.repos.d]
[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
其中mirrorlist指定了yum源地址,是不是对应了报错信息,Cannot prepare internal mirrorlist: No URLs in mirrorlist
找到配置了,修改我也不太熟悉操作,直接找到的网上方法,使用sed命令批量编辑匹配到的文本文件
sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
所以修改之后,再查看内容
[root@b8990d532e92 yum.repos.d]
[baseos]
name=CentOS Linux $releasever - BaseOS
baseurl=http://vault.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
回到最开始构建镜像,经实测,解决方式也有两种:
- 指定centos版本
修改为 FROM centos:7,因为默认是8,改为7,惊奇的发现7的yum源还是可用的,不用做修改
FROM centos:7
MAINTAINER mika
ENV path /home/mika
WORKDIR $path
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $path
CMD echo "---end---"
CMD /bin/bash
- 修改YUM源地址
在Dockerfile文件中,执行yum之前,执行上述两天sed命令,修改yum源地址
FROM centos
MAINTAINER mika
ENV path /home/mika
WORKDIR $path
RUN sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
RUN sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $path
CMD echo "---end---"
CMD /bin/bash
|