Docker将文件添加到VOLUME

时间:2017-05-05 15:44:48

标签: docker dockerfile

我有一个Dockerfile将一些文件复制到容器中,然后创建一个VOLUME。

...
ADD src/ /var/www/html/
VOLUME /var/www/html/files
...

src文件夹中是一个文件夹,在这个文件夹中是我需要在容器第一次启动时复制到VOLUME的一些文件。

我认为第一次创建容器时它会使用卷中指定的原始目录的内容,但事实并非如此。

那么如何将文件存入此文件夹? 我是否需要创建一个额外的文件夹并使用脚本复制它(我希望不是)?

2 个答案:

答案 0 :(得分:8)

您在Dockerfile中添加的内容只需在构建时进行评估(而不是在创建新容器时)。

如果您想从容器中的主机中创建文件,请使用data volume

docker run -v /host_dir:/container_dir ...

如果您只想将文件从主机复制到容器中作为一次性操作,您可以使用:

docker cp /host_dir mycontainer:/container_dir

答案 1 :(得分:2)

问题在于您的ADD声明。您也可能无法理解如何访问卷。将您的努力与下面的演示进行比较:

FROM alpine #, or your favorite tiny image
ADD src/files /var/www/html/files
VOLUME /var/www/html/files

构建一个名为'dataimg'的图像:

docker build -t dataimg .

使用dataimg图像创建名为“datacon”的数据容器:

docker run --name datacon dataimg /bin/cat

从nginx容器中的datacon安装卷:

docker run --volumes-from datacon nginx ls -la /var/www/html/files

你会看到/ var / www / html / files的列表反映了src / files的内容