Dockers镜像分层
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,Dockers镜像分层1,Dockers的最小镜像[root@localhost ~]# docker pull hello-world//下载一个最小的镜像[root@localhost ~]# d
千家信息网最后更新 2024年09月22日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安全错误
数据库的锁怎样保障安全
网络安全宣传员手抄报简单
网络安全可以接单吗
网络时间同步服务器
手机玩方舟服务器很卡
数据库为什么会有空表
查找数据库中重复的数据
笔记本电脑调用家里的服务器
sugon服务器管理软件
存到数据库中中文乱码
shell 查看数据库
软件开发公司app开发
成都网络安全饮酒协会
服务器管理数据本地云备份
数据库错误代码3902
福建诚信网络技术咨询哪家好
网络安全教育行业应该怎么做
网络安全升旗
聚合打车软件开发
浙江推广软件开发供应商
2013年1月软件开发工具
网络软件开发的合同范本
网管网络安全
服务器管理口什么意思
app软件开发案例
下列属于保护网络安全措施
mhw数据库
《网络安全责任追究制度》
组织部网络安全工作开展情况
psql 连接数据库
昆山信息软件开发公司