【问题标题】:Py-Docker create_container using remote volumesPy-Docker create_container 使用远程卷
【发布时间】:2017-09-30 20:22:08
【问题描述】:

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

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

【问题讨论】:

标签: python docker docker-volume dockerpy


【解决方案1】:

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

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

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

【讨论】:

  • 我看到有一个使用卷驱动程序的选项,它可以帮助使用 sshfs 挂载远程目录。我试图理解同样的。然而它需要我一些时间。 (其他司机:docs.docker.com/engine/extend/legacy_plugins/#volume-plugins
  • 这些插件需要先安装在服务器上,不能直接从客户端做任何事情
【解决方案2】:

以下对我有用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-10
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2018-01-31
    相关资源
    最近更新 更多