镜像分层存储机制:
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 镜像名称:查询镜像详情
