我制作了一个名为myImage
的码头工人镜像,其中有一个文件夹:/data
,我想让用户自己编辑它。我读到-v
标志可以装载该卷,所以我按如下方式使用它:
我使用以下命令运行容器:
docker run -v /my_local_path:/data -it myImage /bin/bash
但是令人惊讶的是,docker清除了容器中/data
中的所有文件。但这不是我想要的...实际上,我希望主机可以从/data
中获取所有文件...:(
我该怎么做?
答案 0 :(得分:1)
当您共享这样的卷时,主机上的卷将覆盖容器中的卷,因此将删除容器文件夹中的文件。
您需要做的是将文件放在容器中的文件夹A(容器中的文件夹)中。挂载文件夹B(容器中的另一个文件夹)。然后在装入该卷之后,将文件从文件夹A移到文件夹B。然后这些文件将对主机和容器内部可用。
您可以在Dockerfile中使用RUN或ENTRYPOINT脚本来实现此“移动文件”操作。
对不起,我忘记了您是否需要RUN或ENTRYPOINT(或者两者都可以使用),但是其中之一肯定可以。
我认为,您想要ENTRYPOINT,因为ENTRYPOINT脚本在创建容器后运行。因此它将在卷安装后运行。