Py-Docker使用远程卷的create_container

我正在使用pydocker库远程运行docker容器。 我需要在正在运行的容器中安装一个本地目录。 文档确实提到了使用API​​创build卷的方式。 但是,我无法弄清楚如何在创build容器时使用该卷。

我正在按照https://docker-py.readthedocs.io/en/stable/api.html#module-docker.api.container

简单的答案是你不能。 Docker不会从你的系统挂载目录到远程服务器。 您需要在机器上有可用的数据。

唯一的解决办法就是把它放到图像本身。 然后,您可以在本地启动构build,并将构build上下文设置为您的本地目录。 这将把完整的目录上下文发送到远程docker服务器,然后你可以使用COPY / ADD把它拷贝到Dockerfile里的镜像

这适用于虚拟机,因为共享文件夹从主机插入到虚拟机内部,好像主机文件夹与虚拟机中的泊坞窗远程卷assembly

以下为我工作:

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))