使用读取和写入权限将数据卷装载到docker

时间:2015-04-29 04:07:54

标签: linux filesystems docker

我想将主机数据卷挂载到docker。但容器应具有读写权限,同时,数据卷上的任何更改都不应影响主机中的数据。

我可以映像一个将多个数据卷挂载到单个文件夹的解决方案,一个是只读的另一个是读写。但只有这第二个' -v'在我的命令中工作,

docker run -ti --name build_cent1 -v /codebase/:/code:ro -v /temp:/code:rw centos6:1.0 bash

2 个答案:

答案 0 :(得分:2)

通常情况下,在这种情况下,我认为你ADD是Docker镜像的文件夹,因此运行它的任何容器都会将它放在其(可写)文件系统中,但写入将转到另一层。

您需要在要使用的文件夹上方的文件夹中写一个Dockerfile,该文件夹应如下所示:

FROM my/image
ADD codebase /codebase

然后使用docker build -t some-name <path>构建容器。这些步骤可以添加到您的应用程序的构建脚本中(也许您会找到一些插件来帮助那里)。然后你可以docker run some-name

缺点是有一个副本要做和创建图像,但是如果你启动许多容器,它们将以只读方式共享该层的相同副本,并将它们自己的修改写入上面的独立层。

答案 1 :(得分:1)

  

只有这第二个&#39; -v&#39;在我的命令中工作,

这可能是因为两个-v选项都试图在相同的容器目标文件夹/code上挂载主机文件夹。

   -v /codebase/:/code:ro 
                 ^^^^^
   -v /temp:/code:rw
            ^^^^^   

您可以将这些主机文件夹安装在/code内的两个单独的文件夹中 如:

-v /codebase/:/code/base:ro -v /temp:/code/temp:rw.