如何在容器上使用本地文件?

How can I use a local file on container?

我正在尝试为 运行 程序创建一个容器。我正在使用预先配置的图像,现在我需要 运行 该程序。但是,这是一个机器学习程序,我需要从我的计算机到 运行 的数据集。

文件太大,无法复制到容器中。最好是容器里的程序运行ning在我电脑的本地目录下搜索数据集,但我不知道怎么办。

有什么方法可以用一些 docker 命令来做这个参考吗?或者使用 Dockerfile?

是的,你可以做到。您所描述的是绑定安装。有关该主题的文档,请参阅 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,则默认情况下允许主机上的特定目录:

If you are using Docker Machine on Mac or Windows, your Docker Engine daemon has only limited access to your macOS or Windows filesystem. Docker Machine tries to auto-share your /Users (macOS) or C:\Users (Windows) directory. So, you can mount files or directories on macOS using.

2019 年 7 月更新:

我更新了文档 link 并使命名正确。这些类型的坐骑称为 "bind mounts"。关于 Docker for Mac or Windows 的片段不再出现在文档中,但它应该仍然适用。我不确定他们为什么删除它(我的 Docker for Mac 仍然有一个主机上允许安装路径的明确列表)。