【发布时间】:2019-08-28 17:27:37
【问题描述】:
我遇到了 docker volume 问题。我想将mkdir 目录和touch 文件放在Dockerfile 中。
当我使用-v /path:/path image_name 参数执行docker run -it --name any_name 时,Dockerfile 中创建的目录和文件都丢失了。
例如:
用于构建映像 BB:tag 的 Dockerfile。
FROM AA:tag
RUN set -ex \
&& mkdir -p /var/log/my_directory/ \
&& touch /var/log/my_directory/my_file.log
CMD ["anything_cmd"]
如果我执行
docker run -it --name any_name BB:tag
my_directory 和 my_file.log 都在那里。
但如果我执行
docker run -it --name any_name -v /var/log/container_logs/any_name:/var/log/ BB:tag
my_directory 和 my_file.log 都丢失了。
当docker run 时,-v 发生了什么?做这种事情的最佳做法是什么?
【问题讨论】:
-
/path是什么/var/log/my_directory? -
@mchawre 对不清楚的命令感到抱歉。我更新了它,现在很清楚了。
-
这类似于将一个空的 USB 驱动器安装到一个已经有文件的文件夹上,如果您列出目录中的文件,它将显示为空。目录中存在的文件只有在卸载空的 U 盘后才可用。
标签: docker dockerfile mkdir docker-volume