Docker File创建镜像失败ERROR [3/4] RUN yum -y install vim的解决

 更新时间:2024年11月19日 15:21:23   作者:Covirtue  
文章描述了在使用DockerFile创建基于CentOS Linux 8的镜像时遇到的问题,即无法下载vim软件包的元数据,问题的原因是CentOS Linux 8的AppStream仓库没有可用的URL,为了解决这个问题,作者建议将CentOS版本修改为7,因为CentOS Linux 7的AppStream仓库通常有可用的URL

问题复现

使用以下内容的Docker File创建镜像:

FROM centos
MAINTAINER xxxxx<xxxxxxxxx@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 "============"
CMD /bin/bash

错误描述:

=> ERROR [3/4] RUN yum -y install vim

------
> [3/4] RUN yum -y install vim:
#0 1.627 CentOS Linux 8 - AppStream 61 B/s | 38 B 00:00
#0 1.664 Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
------
--------------------
5 | WORKDIR $MYPATH
6 |
7 | >>> RUN yum -y install vim
8 | RUN yum -y install net-tools
9 |
--------------------
ERROR: failed to solve: process "/bin/sh -c yum -y install vim" did not complete successfully: exit code: 1

解决问题方法

分析问题

> [3/4] RUN yum -y install vim:
#0 1.627 CentOS Linux 8 - AppStream 61 B/s | 38 B 00:00
#0 1.664 Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

由上错误描述可知:问题是由于最新版本CentOS Linux 8中vim软件资源下载失败导致。

解决问题

添加版本信息并修改为7即可。

FROM centos:7 # 添加版本
MAINTAINER xxxxx<xxxxxxxxx@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

# 由于centos7停止服务,这里使用阿里云提供的centos7镜像.2024-08-04
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN yum makecache

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

EXPOSE 80

CMD echo $MYPATH
CMD echo "============"
CMD /bin/bash

完成结果

[+] Building 34.8s (8/8) FINISHED                                                          
 => [internal] load build definition from mycentos                                    0.0s
 => => transferring dockerfile: 306B                                                  0.0s
 => [internal] load .dockerignore                                                     0.0s
 => => transferring context: 2B                                                       0.0s
 => [internal] load metadata for docker.io/library/centos:7                           0.3s
 => [1/4] FROM docker.io/library/centos:7@sha256:9d4bcbbb213dfd745b58be38b13b996ebb5  0.0s
 => CACHED [2/4] WORKDIR /usr/local                                                   0.0s
 => [3/4] RUN yum -y install vim                                                     29.1s
 => [4/4] RUN yum -y install net-tools                                                2.8s
 => exporting to image                                                                2.2s 
 => => exporting layers                                                               2.2s 
 => => writing image sha256:9a4f44d6f8c3f8cb6e515e5183feb133ff89e3bc0a8b0597b5aec81f  0.0s 
 => => naming to docker.io/library/chengxcentos:1.0                                   0.0s 

注意:docker拉取镜像默认为最新版本。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker数据目录迁移方法详解

    Docker数据目录迁移方法详解

    这篇文章主要介绍了Docker数据目录迁移方法,Docker数据目录迁移成功后再也不用担心服务器系统盘目录被占满的情况的,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • MySQL docker容器数据更新统计shell脚本代码方式

    MySQL docker容器数据更新统计shell脚本代码方式

    本文介绍了如何创建和配置一个脚本文件,使其能够每隔一小时执行一次,用于更新MySQL统计信息,脚本使用Docker来执行MySQL命令,并将结果保存到文件中,文章还强调了权限设置和配置定时任务的步骤
    2025-01-01
  • 使用docker部署mysql并开启binlog的方法

    使用docker部署mysql并开启binlog的方法

    本文介绍了如何使用Docker部署MySQL服务并配置开启binlog,以便通过Flink CDC Connector实现对MySQL数据的实时同步,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-02-02
  • docker配置镜像加速器的方法步骤

    docker配置镜像加速器的方法步骤

    国内常见的Docker镜像加速器包括阿里云、网易云、腾讯云等,本文主要介绍了docker配置镜像加速器的方法步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • 详解如何修改docker pull镜像源

    详解如何修改docker pull镜像源

    Docker Hub Mirror 为全球最大的Docker Registry(Docker Hub)提供在中国的镜像代理服务。Docker Hub Mirror会为中国的用户在国内的服务器上缓存诸多镜像。
    2017-03-03
  • 解决docker访问外部https数字证书问题

    解决docker访问外部https数字证书问题

    这篇文章主要介绍了docker访问外部https数字证书问题,为了解决证书验证的问题,我们需要在构建 docker 镜像的时候将 ca-certificates 根证书装上,需要的朋友可以参考下
    2022-09-09
  • linux安装docker配置其他方式

    linux安装docker配置其他方式

    文章介绍了如何安装和配置多种常用软件,如Docker、Redis、Nginx、Zookeeper、Kafka、ElasticSearch和MySQL,并提供了详细的配置步骤和命令
    2026-01-01
  • docker通过sbom获取组件版本和漏洞编号的方法

    docker通过sbom获取组件版本和漏洞编号的方法

    本文主要介绍了docker通过sbom获取组件版本和漏洞编号的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05
  • Kubernetes(k8s)基础介绍

    Kubernetes(k8s)基础介绍

    今天小编就为大家分享一篇关于Kubernetes(k8s)基础介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 使用docker部署若依前后端分离项目全过程

    使用docker部署若依前后端分离项目全过程

    部署前端项目Docker变得越来越流行,它可以轻便灵活地隔离环境,进行扩容,运维管理,这篇文章主要介绍了使用docker部署若依前后端分离项目的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-12-12

最新评论