CentOS7下怎么制作Docker镜像

CentOS7下怎么制作Docker镜像

本篇内容介绍了“CentOS7下怎么制作Docker镜像”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  • Docker Image 的制作两种方法

    方法1:dockercommit#保存container的当前状态到image后,然后生成对应的image方法2:dockerbuild#使用Dockerfile文件自动化制作image

    方法一:docker commit

    创建一个安装好 apache 工具的容器镜像

    [root@Docker~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEcentoslatest470671670cac4monthsago237MB[root@Docker~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES[root@Docker~]#dockerrun-itcentos:latest/bin/bash[root@1b96e68a3cce/]#[root@1b96e68a3cce/]#yum-yinstallhttpd#在container中安装apache软件包[root@1b96e68a3cce/]#exit

    查看 images 列表

    [root@Docker~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEcentoslatest470671670cac4monthsago237MB

    根据容器当前状态做一个 image 镜像:创建一个安装了 apache 工具的 centos 镜像

    语法: docker commit “container 的 ID” 或 “image_name”

    查看容器 ID

    [root@Docker~]#dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES1b96e68a3ccecentos:latest"/bin/bash"3minutesagoExited(0)2minutesagoawesome_hypatia607752360adfcentos:latest"/bin/bash-c'while…"18minutesagoExited(137)12minutesagobrave_fermi0a297ff99af8centos:latest"/bin/bash"22minutesagoExited(1)20minutesagoecstatic_yonathefb4af688330centos:latest"/bin/bash"24minutesagoExited(0)23minutesagoepic_mcclintock[root@Docker~]#dockercommit1b96e68a3ccecentos:apachesha256:b8822ec8a7bbb325793e7908e355180be82a49481cff197661fb5d0da5872e88[root@Docker~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEcentosapacheb8822ec8a7bb9secondsago280MBcentoslatest470671670cac4monthsago237MB

    使用新创建的 centos:apache 镜像,生成一个容器实例

    [root@Docker~]#dockerrun-itcentos:apache/bin/bash[root@e4c295d27581/]#rpm-qahttpdhttpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64

    看到httpd软件名称说明基于 apache 镜像的容器创建成功

    方法二:通过:docker build 创建一个基于 centos 的 httpd web 服务器镜像

    使用 docker build 创建镜像时,需要使用 Dockerfile 文件自动化制作 image 镜像 Dockerfile 有点像源码编译时./configure 后产生的 Makefile

    1、创建工作目录

    [root@Docker~]#mkdir/docker-build[root@Docker~]#cd/docker-build[root@Dockerdocker-build]#touchDockerfile[root@Dockerdocker-build]#lsDockerfile注:make自动化编译时需要Makefile文件,自动化创建docker镜像时,需要Dockerfile

    2、编辑 Dockerfile

    Dockerfile用来创建一个自定义的image,包含了用户挃定的软件依赖等。[root@Dockerdocker-build]#vimDockerfileFROMcentos:latestMAINTAINERRUNyum-yinstallhttpdADDstart.sh/usr/local/bin/start.shADDindex.html/var/www/html/index.htmlCMDechohelloworld

    注释

    FROMcentos:latest#FROM基于哪个镜像MAINTAINER#MAINTAINER镜像创建者RUNyum-yinstallhttpd#RUN安装软件用ADDstart.sh/usr/local/bin/start.shADDindex.html/var/www/html/index.html#ADD将文件拷贝到新产生的镜像的文件系统对应的路径。所有拷贝到新镜像中的文件和文件夹权限为0755,uid和gid为0CMDechohelloworld#container启动时执行的命令或启动服务,但是一个Dockerfile中只能有一条CMD命令,有多条则另执行最后一条CMD

    3、创建 start.sh 脚本启动 httpd 服务和 apache 默认首页 index.html 文件

    [root@Dockerdocker-build]#echo"#!/bin/bash">>start.sh[root@Dockerdocker-build]#echo"/usr/sbin/httpd-DFOREGROUND">>start.sh注:/usr/sbin/httpd-DFOREGROUND相当于执行了systemctlstarthttpd[root@Dockerdocker-build]#chmoda+xstart.sh创建index.html[root@Dockerdocker-build]#echo"dockerimagebuildtestfromjaking">index.html

    4、使用命令 build 来创建新的 image

    语法:docker build -t 父镜像名:镜像的 tag Dockerfile 文件所在路径 -t :表示 tag,镜像名

    例:使用命令 docker build 来创建新的 image,并命名为 centos:httpd

    [root@Dockerdocker-build]#lsDockerfileindex.htmlstart.sh[root@Dockerdocker-build]#dockerbuild-tcentos:httpd./#注:./表示当前目录,另外你的当前目录下要包含DockerfileSendingbuildcontexttoDockerdaemon4.096kBStep1/5:FROMcentos:latest--->470671670cacStep2/5:MAINTAINER--->Runningin0180810d2ab3Removingintermediatecontainer0180810d2ab3--->5b9af0184bcfStep3/5:RUNyum-yinstallhttpd--->Runningin8f5c114649edCentOS-8-AppStream228kB/s|7.0MB00:31CentOS-8-Base547kB/s|2.2MB00:04CentOS-8-Extras431B/s|5.9kB00:14Dependenciesresolved.================================================================================PackageArchVersionRepoSize================================================================================Installing:httpdx86_642.4.37-16.module_el8.1.0+256+ae790463AppStream1.7MInstallingdependencies:aprx86_641.6.3-9.el8AppStream125kapr-utilx86_641.6.1-6.el8AppStream105kcentos-logos-httpdnoarch80.5-2.el8AppStream24k...省略部分输出信息...Complete!Removingintermediatecontainer8f5c114649ed--->040b5f229962Step4/5:ADDstart.sh/usr/local/bin/start.sh--->11a106005031Step5/5:ADDindex.html/var/www/html/index.html--->85b4a3657cedSuccessfullybuilt85b4a3657cedSuccessfullytaggedcentos:httpd

    查看 images 列表

    [root@Dockerdocker-build]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEcentoshttpd85b4a3657ced45secondsago280MBcentosapacheb8822ec8a7bb20minutesago280MBcentoslatest470671670cac4monthsago237MB#注:docker镜像=应用/程序+库

    运行新生成的镜像

    [root@Dockerdocker-build]#dockerrun-itcentos:httpd/bin/bash[root@1188a43a4585/]#lsbinetcliblost+foundmntprocrunsrvtmpvardevhomelib64mediaoptrootsbinsysusr[root@1188a43a4585/]#rpm-qahttpdhttpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64[root@1188a43a4585/]#exitexit[root@Dockerdocker-build]#

“CentOS7下怎么制作Docker镜像”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!

发布于 2022-02-16 23:49:37
收藏
分享
海报
0 条评论
41
上一篇:Docker怎么删除none镜像 下一篇:Linux中怎么使用Docker托管.NET Core
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码