有几篇文章对了解Docker的卷和数据管理非常有帮助。这两个特别优秀:
但是,我不确定我要找的是什么。以下是我的理解:
docker run -v /host/something:/container/something
时,主机文件将覆盖(但不会覆盖)指定位置的容器文件。容器将无法再访问该位置的先前文件,而只能访问该位置的主机文件。/var/lib/docker/vfs/dir/cde167197ccc3e138a14f1a4f7c....
之类的地方)。但是,当Docker必须在Virtualbox VM中运行时,这很麻烦。我的问题很简单。如何反转叠加层,以便在装入卷时,容器文件优先于我的主机文件?
我想指定一个可以轻松访问容器文件系统的挂载点。但似乎没有人问这个问题。我知道我可以使用数据容器,或者我可以使用docker inspect来查找mountpoint,但在这种情况下,这两种解决方案都不是一个好的解决方案。
答案 0 :(得分:7)
docker 1.10+共享文件的方式是通过卷,如docker volume create
这意味着,您不需要专用于数据卷的容器,您可以直接使用数据卷。
这样,您可以在容器中共享和装载该卷,然后将容器中的内容保存在该容器中 这更符合容器的工作方式:从主机中隔离内存,cpu和文件系统:这就是为什么你不能“装载卷并让容器的文件优先于主机文件”的原因:会破坏容器隔离并向主机公开其内容。