挂载docker主机卷但覆盖容器内容

时间:2016-03-19 21:33:46

标签: image docker containers volume dockerfile

有几篇文章对了解Docker的卷和数据管理非常有帮助。这两个特别优秀:

但是,我不确定我要找的是什么。以下是我的理解:

  1. 运行docker run -v /host/something:/container/something时,主机文件将覆盖(但不会覆盖)指定位置的容器文件。容器将无法再访问该位置的先前文件,而只能访问该位置的主机文件。
  2. 在Dockerfile中定义卷时,其他容器可以共享图像/容器创建的内容。
  3. 主持人也可以查看/修改Dockerfile卷,但只有在使用 docker inspect 发现真正的挂载点之后。 (通常在/var/lib/docker/vfs/dir/cde167197ccc3e138a14f1a4f7c....之类的地方)。但是,当Docker必须在Virtualbox VM中运行时,这很麻烦。
  4. 我的问题很简单。如何反转叠加层,以便在装入卷时,容器文件优先于我的主机文件?

    我想指定一个可以轻松访问容器文件系统的挂载点。但似乎没有人问这个问题。我知道我可以使用数据容器,或者我可以使用docker inspect来查找mountpoint,但在这种情况下,这两种解决方案都不是一个好的解决方案。

1 个答案:

答案 0 :(得分:7)

docker 1.10+共享文件的方式是通过卷,如docker volume create 这意味着,您不需要专用于数据卷的容器,您可以直接使用数据卷。

这样,您可以在容器中共享和装载该卷,然后将容器中的内容保存在该容器中 这更符合容器的工作方式:从主机中隔离内存,cpu和文件系统:这就是为什么你不能“装载卷并让容器的文件优先于主机文件”的原因:会破坏容器隔离并向主机公开其内容。