0

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

我正在关注https://docker-py.readthedocs.io/en/stable/api.html#module-docker.api.container上的文档

4

2 回答 2

0

以下为我工作:

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))
于 2017-09-30T22:07:54.297 回答
0

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

唯一的另一种方法是将其放入图像本身。然后您可以在本地启动构建并将构建上下文设置为您的本地目录。这会将完整的目录上下文发送到远程 docker 服务器,然后您可以使用 COPY/ADD 将其复制到 Dockerfile 中的映像

这适用于虚拟机,因为共享文件夹从主机插入到虚拟机中,并且主机文件夹似乎与虚拟机中的 docker 远程卷挂载一起使用

于 2017-09-30T20:28:53.363 回答