我正在尝试创建一个容器来运行程序。我正在使用预配置映像,现在需要运行程序。但是,这是一个机器学习程序,我需要计算机上的数据集才能运行。
该文件太大,无法复制到容器中。最好是在容器中运行的程序搜索了我计算机本地目录中的数据集,但我不知道该怎么做。
有什么办法可以通过某些docker命令来执行此参考吗?还是使用Dockerfile?
Answers:
是的,您可以这样做。您所描述的是绑定安装。请参阅https://docs.docker.com/storage/bind-mounts/获取有关此主题的文档。
例如,如果要将文件夹从主目录装入到/mnt/mydata
容器中,可以执行以下操作:
docker run -v /Users/andy/mydata:/mnt/mydata myimage
现在,/mnt/mydata
在容器内部将可以访问/Users/andy/mydata
我的主机。
请记住,如果您使用的是Mac的Docker或Windows的Docker,默认情况下主机上会允许使用特定目录:
如果在Mac或Windows上使用Docker Machine,则Docker Engine守护程序仅具有对macOS或Windows文件系统的有限访问权限。Docker Machine尝试自动共享您的/ Users(macOS)或C:\ Users(Windows)目录。因此,您可以使用在macOS上挂载文件或目录。
2019年7月更新:
我已经更新了文档链接并命名正确。这些类型的安装架称为“绑定安装架”。有关适用于Mac或Windows的Docker的片段不再出现在文档中,但仍应适用。我不确定为什么他们将其删除(我的Mac版Docker仍然在主机上具有允许的安装路径的明确列表)。
docker run
命令和预期结果方面提出一个新问题,因为它现在不在此问题的范围内。确实,它应该如何工作。听起来主机文件夹可能不正确,或者您正在从外部安装某些东西/Users
。确保包括Docker版本以及您正在使用的Docker(适用于Windows的Docker等)。
docker myimage run -v /Users/andy/mydata:/mnt/mydata
docker run --help
: Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]