【发布时间】:2015-06-04 19:18:31
【问题描述】:
我有兴趣让 Docker 可以访问外部文件,但我不希望将它们作为卷包含在内。我需要访问的文件会随着时间的推移而改变,这意味着我需要反复重新挂载,除非我可以挂载一个单纯的目录,并且该目录中的任何内容也会被挂载。
我只需要允许推入容器的软件程序“在”我的本地系统上运行,该软件程序可以访问我本地系统上的文件。
建议?除了添加需要作为卷处理的文件之外,还有其他方法吗?
【问题讨论】:
我有兴趣让 Docker 可以访问外部文件,但我不希望将它们作为卷包含在内。我需要访问的文件会随着时间的推移而改变,这意味着我需要反复重新挂载,除非我可以挂载一个单纯的目录,并且该目录中的任何内容也会被挂载。
我只需要允许推入容器的软件程序“在”我的本地系统上运行,该软件程序可以访问我本地系统上的文件。
建议?除了添加需要作为卷处理的文件之外,还有其他方法吗?
【问题讨论】:
我用下面的命令解决了同样的问题
docker run --mount type=bind,source="$(pwd)"/data,target=/home/data -it <name_of_container>
注意“-it conainter_name”应该是最后一个标志。
【讨论】:
听起来您正在寻找在容器中安装主机目录。您无需重新启动容器即可获取对已安装目录的更改。 Link to relevant docs.
【讨论】:
我想知道ADD 命令是否可以帮助您实现目标。例如,给定 Dockerfile 行:
ADD /Users/userX/myappfiles /appfiles
和命令行:
docker run myapp --input /myappfiles
myapp 将能够访问本地文件系统上的/Users/userX/myappfiles 以获取其输入。
【讨论】:
ADD 复制文件/文件夹,您的担忧是有效的。