当前位置:   article > 正文

Docker中使用Dockerfile文件构建镜像_dockerfile怎么叠加镜像

dockerfile怎么叠加镜像

一、Docker镜像原理

Linux文件系统由bootfs和rootfs两部分组成 

bootfs:包含bootloader(引导加载程序)和kernel(内核)

rootfs:root文件系统,包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件

不同的linux发行版,bootfs基本一样,而rootfs不同,如ubuntu、centos等

Docker镜像是由特殊的文件系统叠加而成,最底端是bootfs,并使用宿主机的bootfs;第二层是root文件系统rootfs,称为base image(基础镜像);然后在往上可以叠加其它的镜像文件,如下为tomcat镜像的结构层次图

上述这种叠加镜像的操作称为“统一文件系统(Union File System)”,该技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。

一个镜像可以放在另一个镜像的上面,位于下面的镜像称为父镜像,最底部的镜像称为基础镜像。

只读镜像:如上图所示,存在三个只读镜像:镜像(tomcat)、镜像(JDK)、root基础镜像(centos/ubuntu),只读的意思是说这三个镜像是不能被修改,修改了以后便不能被其它镜像所复用。

只读镜像是不能被镜像的,但是如果真的想更改tomcat镜像,应该怎么办?

答:当一个镜像启动容器时,Docker会在最顶层加载一个读写的文件系统作为容器。如果想更改tomcat镜像,则可以先启动tomcat容器,然后在此容器里面做修改,修改完了以后再把容器打包为一个新的镜像。

Docker镜像这种分层叠加的文件系统的好处是:复用

二、Docker容器转为镜像

docker commit 容器id 自定义的镜像名称:自定义版本号
docker save -o 压缩文件名称 自定义的镜像名称:自定义版本号
docker load -i 压缩文件名称

应用背景:开发人员将容器转化为镜像,然后将该镜像打包为压缩文件,提供给测试人员。测试人员将压缩文件加载为镜像,创建并启动容器进行测试。

以下为实操部分:

第一步:使用docker commit a0f9f284899a new_tomcat:1.0命令将tomcat容器转化为镜像

提示:通过docker commit命令生成镜像时,原容器的挂载目录中的内容不会放到新的镜像中

第二步:使用docker save -o new_tomcat.tar new_tomcat:1.0命令将镜像压缩为文件

第三步:删除已存在的new_tomcat镜像

第四步:通过docker load -i new_tomcat.tar命令将压缩文件还原为一个镜像

再次查看可以看到镜像已经还原,如下所示:

三、Dockerfile文件生成镜像

1.Dockerfile的概念

Dockerfile是一个文本文件,包含了一条条的指令。每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像。

对于开发人员:可以为开发团队提供一个完全一致的开发环境。

对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了。

对于运维人员:在部署时,可以实现应用的无缝移植。

2.Dockerfile的关键字

FROM:指定父镜像,指定dockerfile基于哪个image构建

MAINTAINER:用来标明这个dockerfile谁写的

WORKDIR:定义默认的工作目录

RUN:执行一段命令,默认是/bin/bash,格式为:RUN command 或者RUN ["command","param1","param2"]

CMD:容器启动时执行

3.Dockerfile自定义centos镜像

案例需求:自定义centos7镜像,要求:1.默认登录路径为/usr、2.可以使用vim

第一步:创建centos_dockerfile文件

touch centos_dockerfile

第二步:往centos_dockerfile文件中写入下述内容

  1. FROM centos:7
  2. MAINTAINER 123456789@163.com
  3. RUN yum install -y vim
  4. WORKDIR /usr
  5. CMD /bin/bash

第三步:使用docker build命令通过dockerfile文件来构建镜像

docker build -f ./centos_dockerfile -t test_centos:1 .

第四步:查看使用dockerfile构建的镜像并创建启动容器

docker images
docker run -it --name=c2 test_centos:1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/380091
推荐阅读
相关标签
  

闽ICP备14008679号