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邀请赛服务器
上海翱行网络技术
深圳商城系统软件开发