dockerfile-镜像分层机制

镜像分层存储机制:

docker在底层想存储一个镜像是分层存储的,即镜像由运行构建镜像的dockerfile文件中的指令制作,并且运行指令时会在磁盘产生内容,其他镜像在构建时遇到相同指令产生的内容不再占用磁盘空间而是直接使用已有指令产生的磁盘内容。如果是相同镜像的多个容器实例时,这多个容器实例都只用一个镜像在磁盘产生的内容,只有对容器修改的内容不同即单独成为各自的容器层,即各个独立的容器在磁盘存储不是完全独立的,相同的已经在磁盘存在的内容不会再去存储一份而是各个容器共用,避免占用空间浪费,各个容器或镜像不同的部分再单独存储。。。。(理解的不太到位)

例子:

官方镜像nginx和自己制作的镜像nginx比较:

1.docker image history 镜像名称查看镜像的历史即构建镜像的dockerfile文件比较镜像不同:

2.docker image inspect 镜像名称查看镜像的详情比较镜像不同:

3.docker ps -s展示启动容器的总文件大小比较容器:

容器与镜像存储机制:

镜像不删,镜像的基础数据就还在磁盘里边,容器一删,对镜像的修改内容即容器层就会被删除

启动容器把数据挂载到主机原因:

删除容器就是删除了容器层,对镜像的修改操作数据从磁盘被删除,则容器数据丢失,所以将修改数据挂载到主机,在删除了容器即删除容器层之后,容器层的修改数据已被复制一份挂载到主机在磁盘不会丢失

docker常用命令:

docker image history 镜像名称:查询镜像的历史,即查询该镜像的dockerfile文件指令以及指令运行产生的内容

docker image inspect 镜像名称:查询镜像详情

相关推荐
喜欢吃燃面11 小时前
Linux:环境变量
linux·开发语言·学习
代码游侠11 小时前
ARM开发——阶段问题综述(二)
运维·arm开发·笔记·单片机·嵌入式硬件·学习
Mr.朱鹏12 小时前
Nginx路由转发案例实战
java·运维·spring boot·nginx·spring·intellij-idea·jetty
java_logo12 小时前
OpenCode 企业级 Docker 部署完整指南
运维·docker·容器·opencode·opencode本地化部署·opencode部署手册·opencode部署方案
TTBIGDATA13 小时前
【knox】User: knox is not allowed to impersonate admin
大数据·运维·ambari·hdp·trino·knox·bigtop
佑白雪乐14 小时前
<Linux基础第10集>复习前面内容
linux·运维·服务器
春日见14 小时前
自动驾驶规划控制决策知识点扫盲
linux·运维·服务器·人工智能·机器学习·自动驾驶
暮云星影14 小时前
四、linux系统 应用开发:UI开发环境配置概述 (三)
linux·ui·arm
玉树临风江流儿15 小时前
docker镜像加速器配置步骤
运维·docker·容器