2024年6月30日, CentOS 7 EOL (End-Of-Live)。

公司产品的Docker镜像之前是基于CentOS 7构建的,一年之前看到CentOS 7 EOL预告时就决定:等产品新版发布时把Docker镜像base系统切换到Debian。

7月1号,周一上午,时隔一年多...产品新版本终于上线,同时打包发布了基于Debian,CentOS的两个镜像,网站挂新的Debian版本,CentoOS老镜像升级后给老用户平滑过度一下。

到了下午,发现CentOS版本镜像有问题,需要重新打包,但是build时报错:

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"

提示yum更新用的域名"mirrorlist.centos.org"DNS无法解析,在其他机器上dig了一下同样无法解析。这时我还没把异常跟CentOS 7 EOL关联起来,以为只是临时DNS故障,因为我上午build好好的,而且新闻看了一年了我也忘了具体的EOL时间。用docker的老用户也不多,不着急,就想等等吧,明天再试试...

7月2号,dig了一下mirrorlist.centos.org,没有恢复,再等等吧...

7月3号,差点忘了这事,dig了一下mirrorlist.centos.org,没有恢复,明显不是临时故障... Google了一下, StackExchange有个贴提到是由于CentOS 7 EOL域名失效了...需要编辑yum配置文件,禁用mirrorlist,并把原有软件源切换到一个归档源"vault.centos.org":

sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo

把上面的命令加到Dockerfile里搞定,评论区有个一样docker build不过的老哥

Great... :-D, I was struggling to build a docker image and as I got everything resolved... bam!... 1 July 2024.... 😂 – Rosdi

小剧场:

Me: 软件源DNS凭空消失感觉不太好吧,留着域名,返回一个HTTP错误信息不行么...
CentOS: 免费用别逼逼,快去加入我们的CentOS Stream滚滚计划吧!
Me: 我宁肯去吃💩Debian...