使用远程卷的Py-Docker create_container

时间:2017-09-30 20:22:09

标签: python docker docker-volume dockerpy

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

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

上的文档

2 个答案:

答案 0 :(得分:0)

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

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

这适用于VM,因为共享文件夹从主机插入VM内部,并且主机文件夹似乎与VM中的docker远程卷安装一起使用

答案 1 :(得分: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))