千家信息网

Dockers镜像分层

发表于:2025-02-13 作者:千家信息网编辑
千家信息网最后更新 2025年02月13日,Dockers镜像分层1,Dockers的最小镜像[root@localhost ~]# docker pull hello-world//下载一个最小的镜像[root@localhost ~]# d
千家信息网最后更新 2025年02月13日Dockers镜像分层

Dockers镜像分层

1,Dockers的最小镜像

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

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


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 scratchADD 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//编写DockerfileFROM centos:7  RUN yum -y install vim  #或["yum","install","vim"]RUN yum -y install net-toolsCMD ["/bin/bash"]

执行一下

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

执行的层次

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

Docker镜像的缓存特性

1.创建一个新的Dockerfile文件

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


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

3.再次创建一个新的Dockerfile

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


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

镜像 指令 命令 目录 运行 相同 容器 缓存 语法 参数 名称 解释 最小 也就是 文件 方式 是在 标签 特性 制作 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 sap 连接数据库类 饥荒联机版在别人的服务器换角色 人工智能数据库工程师招聘 北京云尚制软件开发有限公司 开展数据库营销的企业网站 网络安全周工作计划 qq炫舞为什么关服务器 临床数据管理数据库锁库流程 圣斗士星矢正义传说换服务器 计算机网络技术能就业的行业职位 mc服务器给权限插件 工信部网络安全供应商 办公室数据存放服务器 电脑虚拟打印服务器 h3c服务器uid什么意思 嵩明专业性软件开发价格走势 违反网络安全 案例 数据库管理技术 选择题 服务器版小红伞 河南埃尔网络技术有限公司 体验服务器组装视频 网络技术能报考一建 校网络安全和信息化办公室 战术小队没有官方服务器 广发银行软件开发社招面试题 视频会议软件开发价钱多少 网络安全ppt课件下载免费 梦幻西游pk邀请赛服务器 上海翱行网络技术 深圳商城系统软件开发
0