我有一个Dockerfile
将一些文件复制到容器中,然后创建一个VOLUME。
...
ADD src/ /var/www/html/
VOLUME /var/www/html/files
...
在src
文件夹中是一个文件夹,在这个文件夹中是我需要在容器第一次启动时复制到VOLUME的一些文件。
我认为第一次创建容器时它会使用卷中指定的原始目录的内容,但事实并非如此。
那么如何将文件存入此文件夹? 我是否需要创建一个额外的文件夹并使用脚本复制它(我希望不是)?
答案 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的内容