我正在使用 pydocker 库远程运行一个 docker 容器。我需要在正在运行的容器中挂载一个本地目录。该文档确实提到了使用 API 创建卷的方法。但是,我无法弄清楚如何在创建容器时使用该卷。
我正在关注https://docker-py.readthedocs.io/en/stable/api.html#module-docker.api.container上的文档
我正在使用 pydocker 库远程运行一个 docker 容器。我需要在正在运行的容器中挂载一个本地目录。该文档确实提到了使用 API 创建卷的方法。但是,我无法弄清楚如何在创建容器时使用该卷。
我正在关注https://docker-py.readthedocs.io/en/stable/api.html#module-docker.api.container上的文档
以下为我工作:
volume = cli.create_volume(name='<volume-name>',
driver='vieux/sshfs',
driver_opts={'sshcmd': '<username@hostname>:<path>', 'password':'<password>'},
labels={})
container = cli.create_container(
container_url,
'<run-cmd>',
detach=True,
volumes=['<mnt_dir>'],
host_config=self.dclient.create_host_config(
binds={ \
'<volume-name>': {\
'bind': '<mnt_dir>', \
'mode': 'ro', \
'src': '<volume>', \
'volume-driver': 'vieux/sshfs', \
'target' :'/app', \
'volume-opt': { \
'sshcmd': 'username@hostname', \
'password': <passwd> \
} \
} \
},
port_bindings=port_map))
简单的答案是你不能。Docker 不会将目录从您的系统挂载到远程服务器。您需要在机器上提供可用的数据。
唯一的另一种方法是将其放入图像本身。然后您可以在本地启动构建并将构建上下文设置为您的本地目录。这会将完整的目录上下文发送到远程 docker 服务器,然后您可以使用 COPY/ADD 将其复制到 Dockerfile 中的映像
这适用于虚拟机,因为共享文件夹从主机插入到虚拟机中,并且主机文件夹似乎与虚拟机中的 docker 远程卷挂载一起使用