Docker通过DockerFile自定义Centos 镜像

  • 定义DockerFile

自己练习dockerFile,自定义centos镜像,并使之可以执行基本命令: vimifconfig

定义DockerFile

  1. 编写Centos DockerFile,创建构建脚本:vim mydockerFile
FROM centosMAINTAINER 123<123@163.com>ENV MYPATH /usr/localWORKDIR  $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80CMD echo $MYPATHCMD echo "----end----"CMD /bin/bash
  1. 通过已创建的dockerFile来生成镜像:(特别注意命令后面有个.)
dockerfile]# docker build -f mydockerfile -t 123/mycentos:1.0 .

执行该命令后,理论上,会正常build,创建一个新的镜像image(123/mycento:1.0)但是,这里,操作练习时,我遇到一个问题:

Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlis

发生在执行RUN yum update -y 时报错;
原因找了一大圈,说是centos停更,导致原先镜像repo不能找到,需要更新镜像repo URL
在dockerFile中,我的基础建设FROM centos命令,这里的centos来源于我从docker hub pull下来的centos,因此要直接改动官方给的镜像centos怕是不能够的。因此,我们可以先基于官方的centos image先创建一个改良版的自己的centos,这里就涉及到要自定义一个centos镜像:

  1. 自定义一个改良版的cento image:
    1.1. 首先先基于官方centos生成一个container容器:
    1.2.
~]# docker run -it centos /bin/bash
#进入容器
[root@a3c7095c2d99 /]# cd /etc/yum.repos.d/
[root@a3c7095c2d99 yum.repos.d]# ls
CentOS-Linux-AppStream.repo  CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Devel.repo   CentOS-Linux-FastTrack.repo         CentOS-Linux-Media.repo  CentOS-Linux-PowerTools.repo
CentOS-Linux-BaseOS.repo     CentOS-Linux-Debuginfo.repo          CentOS-Linux-Extras.repo  CentOS-Linux-HighAvailability.repo  CentOS-Linux-Plus.repo   CentOS-Linux-Sources.repo
[root@a3c7095c2d99 yum.repos.d]# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
[root@a3c7095c2d99 yum.repos.d]# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
[root@a3c7095c2d99 yum.repos.d]# yum makecache
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                                                                                                                                                                                    2.6 MB/s | 8.4 MB     00:03
CentOS Linux 8 - BaseOS                                                                                                                                                                                       3.8 MB/s | 4.6 MB     00:01
CentOS Linux 8 - Extras                                                                                                                                                                                        14 kB/s |  10 kB     00:00
Metadata cache created.
[root@a3c7095c2d99 yum.repos.d]# yum update -y

执行完后,Ctrl+p+q,退出容器,提交该容器,生成新的镜像,也就是改良版的cento image:

 ~]# docker commit -a="123" -m="update centos repo" a3c7095c2d99 123/mycentos:1.0

自此,我们生成一个改良版的centos

基于此,在编写dockerFile时,将基础建设FROM centos命令,改为:FROM 123/mycentos:1.0,执行时,docker会从本地获取改良版的centos,再去执行yum命令就不会出现报错问题了:

dockerfile]# docker build -f mydockerfile -t 123/centos:2.0 .

自此以后,基于该centos创建的container容器,就可以使用vimifconfig命令了。

操作练习来源于:B站UP主:遇见狂神说(良心大神)

Docker通过DockerFile自定义Centos 镜像相关推荐

  1. 编写Dockerfile增强centos镜像:安装vim 和net-tools

    批量删除正在运行的docker容器 docker rm -f $(docker ps -q) #删除正在运行的容器 -q是容器ID docker rm -f $(docker ps -q)docker ...

  2. Docker使用Dockerfile构建简单镜像

    Docker使用Dockerfile构建简单镜像 首先确保系统已经安装docker 构建镜像 安装基础镜像 sudo docker pull ubuntu 查看镜像是否已经拉取成功 REPOSITOR ...

  3. (十二) 简单使用 Dockerfile 保留字指令,尝试自定义centos镜像

         需求 自己使用Dockerfile构建一个自己自定义的centos 镜像.自定义的centos镜像中中可以使用 vim 命令 (精简版的centos镜像中是没有vim的). 一.查看dock ...

  4. docker基础(11):自定义tomcat镜像启动与访问

    文章目录 下载准备的资源 自定义tomcat镜像.启动.访问 遇到的问题 问题1:提示加载插件中,陷入长时间的等待,实际上已经出错了.错误消息:Loaded plugins: fastestmirro ...

  5. Docker 使用Dockerfile构建tomcat镜像

    Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...

  6. docker利用Dockerfile来制作镜像

    在前面的例子(docker tomcat镜像制作)中,我们从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我 ...

  7. Docker 使用Dockerfile 构建Hadoop镜像与集群实例

    文章转自:https://cloud.tencent.com/developer/article/1084166 目录 获取centos7镜像 安装SSH 设置固定IP 构建Hadoop镜像 配置Ha ...

  8. 解决使用Dockerfile更新centos镜像Failed to download metadata for repo‘AppStream’「CentOS」问题

    由于docker中的centos镜像是没有vim编辑器,net-tools等功能,于是使用Dockerfile构建新的centos镜像,我的Dockerfile如下(部分无关内容已省略): FROM ...

  9. docker使用DockerFile构建php镜像

    使用docker pull下来的php-fpm容器如果直接使用会提示缺少某些扩展 在容器内安装扩展后如果不小心删除掉容器重新打开run一次镜像又要再重新安装 所以最好是用 dockerfile 一次性 ...

最新文章

  1. 【怎样写代码】函数式编程 -- Lambda表达式(一):引出
  2. (0076)iOS开发之UIWebView嵌套直播平台(不涉及播放器技术的开发)
  3. 5G:4G到5G的演进,整体网络架构的主要区别。
  4. 并发编程--线程池与进程池
  5. 图解Spring循环依赖,看过之后面试再也不用慌了!
  6. 学习Python技术有哪些优势?
  7. SAP UI5 datajs.js response handling
  8. Apache Tomcat 7 Configuration BIO NIO AIO APR ThreadPool
  9. Wordpress不同页面显示不同小工具
  10. Configuration property name ‘fdfs.thumbImage‘ is not valid---springcloud工作笔记163
  11. Token ,Cookie和Session的区别
  12. 总结Verilog中always语句的使用
  13. nyoj1058部分和问题(简单基础易上手的dfs)
  14. 记Dorado7学习(5)
  15. sqlmap注入之tamper绕过WAF防火墙过滤
  16. 网页截图插件FireShot
  17. 浅析大数据与传统经济学
  18. centos7设置虚拟内存
  19. 程序员找工作-----人力资源面试题
  20. STM32芯片数据手册下载——官网免费下载方法

热门文章

  1. SpringBoot2-6 Web1-静态资源 默认4个目录,特别是resources 目录, webjars引入和内部资源访问,注意其内部resources目录 HandlerMapping
  2. 转录组表达量计RPKM、FPKM、TPM说明
  3. 2021virtualbox中Ubuntu16.04:开发环境配置,更换源
  4. Web开发中软件工程艺术(Web程序员请进来谈谈,特别是有大型门户网站后台开发的程序员)
  5. 不想升级,iOS系统自动更新可彻底关闭! 2016-05-23 16:38 更新/自动/on 昨天笔者发布了一篇关于iOS系统总提醒更新,到底要不要升级的文章,不少读者在微信上留言给笔者, iPhon
  6. Scrapy新手入门
  7. AAA服务器原理,路由交换学习笔记(十七)AAA基本原理
  8. 基于BIM的施工安全管理方法有哪些?
  9. DHCP-小结(拓展 网卡文件的配置)
  10. 【转载】200多个js技巧代码