【Docker】容器中的/data目录和镜像中的/data目录有什么区别?
该图来自于《Docker开发指南》42页,他这里讲到:容器中的/data目录便成为了一个数据卷,然后他又接着讲:镜像中的/data目录中的所有文件将被复制到数据卷内。请问容器中的/data目录和镜像中的/data目录有什么区别?
回答
这句话的意思是说,如果镜像中本身就有/data目录,则容器会首先将镜像中/data目录中的文件复制到到数据卷内。这时,/data在本机对应的数据卷中的内容和原本镜像中的/data目录中的文件是一样的。
例如:我现在基于debian镜像,创建一个容器container3, 创建了一个数据卷挂载在/bin目录
docker run -i -t --name container3 -v /bin debian bash
但是我们都知道,debian这个镜像本身就有一个目录/bin。
我们接下来查看容器container3在本机对应的数据卷路径,
docker inspect container3
可以看到数据卷的目录为:
/var/lib/docker/volumes/8b56dfa9877c40bdf72121596ac27d02995fd8858c3801c581d6792745d38756/_data
我们在宿主机中进入该目录查看数据卷中的文件:
cd /var/lib/docker/volumes/8b56dfa9877c40bdf72121596ac27d02995fd8858c3801c581d6792745d38756/_datals
可以看到,数据卷的文件和镜像debian /bin目录下的文件是完全一致的。
现在我们在数据卷中新建一个文件:
touch 1.txt
回到容器container1,去container1的/bin目录下查看内容
docker start -i -a container1 ls bin/
可以看到,在bin目录下出现了1.txt。
所以说,这本书这里并没有讲解错误,只是汉语比较绕,把我给绕糊涂了。下面的阐述方式可能更准确一点
容器中的/data目录便成为了一个数据卷的挂载点。如果镜像中原来就存在/data目录,则镜像的/data目录中的所有文件将被复制到本地数据卷内。
镜像是死的,容器是活的。容器都是由镜像创造出来的运行空间,是实际干活的,镜像只负责创建容器。
另外放弃这本书吧,当年就很多地方写得很不到位,现在版本变化这么大,早就过时了。
建议去看官方文档。
以上是 【Docker】容器中的/data目录和镜像中的/data目录有什么区别? 的全部内容, 来源链接: utcz.com/a/82519.html