Dockers镜像分层
admin
2023-03-27 22:02:14
0

Dockers镜像分层

1,Dockers的最小镜像

[root@localhost ~]# docker pull hello-world
//下载一个最小的镜像
[root@localhost ~]# docker images
//查看镜像

Dockers镜像分层

[root@localhost ~]# docker run hello-world
//运行一下hello-world (里面是一个文本对docker运行的简单介绍)

Dockers镜像分层
dockerfile的组成
1)FROM:scratch(抓、挠)
2)COPY:hello /
3)CMD:[“/hello”]
FROM

 语法:FROM [:]
 解释:设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上下载。

COPY

  语法:COPY  
  解释:用法与ADD相同,不过不支持使用url,所以在使用docker build – < somefile时该指令不能使用。

CMD

  语法:①CMD ["executable", "param1", "param2"]    #将会调用exec执行,首选方式
      ②CMD ["param1", "param2"]        #当使用ENTRYPOINT指令时,为该指令传递默认参数
      ③CMD  [ | ]        #将会调用/bin/sh -c执行
  解释:CMD指令中指定的命令会在镜像运行时执行,在Dockerfile中只能存在一个,如果使用了多个CMD指令,则只有最后一个CMD指令有效。当出现ENTRYPOINT指令时,CMD中定义的内容会作为ENTRYPOINT指令的默认参数,也就是说可以使用CMD指令给ENTRYPOINT传递参数。
  注意:RUN和CMD都是执行命令,他们的差异在于RUN中定义的命令会在执行docker build命令创建镜像时执行,而CMD中定义的命令会在执行docker run命令运行镜像时执行,另外使用第一种语法也就是调用exec执行时,命令必须为绝对路径。

2、Base镜像(基础镜像
Centos:7镜像的dockerfile

FROM scratch

ADD centos-7-x86_ _64-docker.tar.xz /

LABEL org. label-schema. schema-version="1.0" \|
org. label-schema. name="Centos Base Image" \
org. labe1-schema. vendor="centos" \
org. labe1-schema. 1icense="GPLV2" \
org. labe1-schema build-date="20190305 '

CMD ["/bin/bash"]

3、镜像的分层
1)dockerfile的书写格式为:Dockerfile(首字母大写,包括文件名称)
2)From:构建镜像有两种方式,一种scratch(从零构建),另一种可以基于某个镜像开始构建
3)镜像所运行的操作(用户所期望的)

[root@localhost ~]# mkdir test
//创建测试目录
[root@localhost ~]# cd test
//进入测试目录
[root@localhost ~]#vim Dockerfile
//编写Dockerfile
FROM centos:7  
RUN yum -y install vim  #或["yum","install","vim"]
RUN yum -y install net-tools
CMD ["/bin/bash"]

执行一下

[root@localhost test]# docker build -t centos7-vim-net-tools:12-11 .
//使用当前目录的 Dockerfile 创建镜像,标签为 centos7-vim-net-tools:12-11
build: 使用 Dockerfile 创建镜像
-t:标签
. :当前目录

Dockers镜像分层

执行的层次
Dockers镜像分层

4.Dockerfile镜像分层总结
镜像时容器的基石,容器是镜像运行后的实例。当镜像运行为容器之后,对镜像的所有数据仅有只读权限,如果需要对镜像源文件进行修改或删除操作,此时是在容器层(可写层)进行的,用到了COW(copy on write)写时复制机制。

Docker镜像的缓存特性

1.创建一个新的Dockerfile文件

[root@localhost ~]# vim Dockerfile
FROM centos:7
RUN yum -y install vim
RUN yum -y install net-tools
RUN yum -y install wget
CMD ["/bin/bash"]
[root@localhost ~]# docker build -t new-centos .
//使用当前目录的 Dockerfile 创建镜像,名称为new-centos

Dockers镜像分层
如果在相同的层,有用到相同的镜像,可以不必再去下载,直接使用缓存。(如果第一层的不相同了,那么下面的相同也没用了,需要重新下载)

3.再次创建一个新的Dockerfile

[root@localhost ~]# mkdir test1
[root@localhost ~]# cd test
[root@localhost test]# cd ../test1
[root@localhost test1]# vim Dockerfile
FROM centos:7
RUN yum -y install vim
RUN yum -y install wget
RUN yum -y install net-tools
CMD ["/bin/bash"]
[root@localhost test1]# docker build -t centos-new .
//使用当前目录的 Dockerfile 创建镜像,名称为centos-new

Dockers镜像分层
即使镜像层里的操作一样,也必须是在同一层才可以使用dockerfile的缓存特性
如果制作镜像过程中,不想使用缓存,可以--no-cache选项

相关内容

热门资讯

【第一消息】“红黑大战怎么装挂... 家人们!今天小编来为大家解答红黑大战透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
玩家最新攻略“hhpoker有... 有 亲,根据资深记者爆料hhpoker是可以开挂的,确实有挂(咨询软件无...
今日重大通报“阿道夫游戏辅助器... 有 亲,根据资深记者爆料阿道夫游戏是可以开挂的,确实有挂(咨询软件无需打...
最新引进“新九天牛牛究竟有挂吗... 网上科普关于“新九天牛牛有没有挂”话题很是火热,小编也是针对新九天牛牛作*弊开挂的方法以及开挂对应的...
今日重大发现“约战丹东麻将怎么... 今日重大发现“约战丹东麻将怎么开挂?”(太坑了原来有挂)您好,约战丹东麻将这个游戏其实有挂的,确实是...
今日重大发现“陕西三代一开挂神... 有 亲,根据资深记者爆料陕西三代一是可以开挂的,确实有挂(咨询软件无需打...
尼日利亚外长证实向美提供打击恐... 【环球网报道】据法新社26日报道,尼日利亚外交部长优素福·图加尔证实,尼方曾在打击行动前向美国提供有...
今日重磅消息“中至九江麻将究竟... 网上科普关于“中至九江麻将有没有挂”话题很是火热,小编也是针对中至九江麻将作*弊开挂的方法以及开挂对...
【第一资讯】“蛮籽麻将重庆是不... 家人们!今天小编来为大家解答蛮籽麻将重庆透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
终于了解“神赚棋牌是不是有挂?... 终于了解“神赚棋牌是不是有挂?”(原来真的有挂)您好,神赚棋牌这个游戏其实有挂的,确实是有挂的,需要...