python docker如何将目录从主机挂载到容器

标签 python python-2.7 docker dockerpy

有人可以分享一些展示如何挂载目录的 py api 示例吗? 我这样试过,但我看不到它的工作

dockerClient = docker.from_env()
dockerClient.containers.run('image', 'ls -ltr', volumes={os.getcwd(): {'bind': '/tmp/', 'mode': 'rw'}})

最佳答案

通过获取容器对象

根据以下内容更改您的代码:

import os
import docker

client = docker.from_env()

container = client.containers.run('ubuntu:latest', 'ls -ltr /tmp', volumes={os.getcwd(): {'bind': '/tmp/', 'mode': 'rw'}}, detach=True)
print(container.logs()) 

# => b'total 4\n-rw-r--r-- 1 1000 1000 215 Feb 14 12:07 main.py\n'

这里,容器对象是关键。要获得它,您必须将 detach 参数作为 True 传递。

然后它可以打印出执行命令的结果。

通过设置流

获取输出的另一种方法是将 stream 参数设置为 True,返回日志生成器而不是字符串。如果分离为真,则忽略。

lines = client.containers.run('ubuntu:latest', 'ls -la /', volumes={os.getcwd(): {'bind': '/tmp/', 'mode': 'rw'}}, stream=True)                                                                         

for line in lines:                                                                                  
    print(line)

docker-py 是 docker 引擎 api 的包装器。因此,一切都在容器内执行,执行结果可通过 REST 获得。

通过使用子进程

如果您想执行某些操作并即时获取其输出,您可以使用 subprocess 模块。

import subprocess

subprocess.run(["docker run ..."])

文档:

关于python docker如何将目录从主机挂载到容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54688176/

相关文章:

python - 检查字符串是否只包含 ASCII 字符?

python - 测量图像中文本边框的直/平滑度

python - 从哪里可以导入 webapp2 响应类?

python-2.7 - oracle数据库大数据的内存管理

docker - 没 Root过的Jenkins docker代理管道

python - 如何使用 scikit-learn 在分类问题中为 F1 分数做 GridSearchCV?

python - 如何根据 Kivy 中另一个小部件的值禁用一个小部件

python-2.7 - 如何使用 azure cosmos db 最大化数据库上传速率

Symfony 4 应用程序与 Docker Compose 一起工作,但与 Docker Swarm 一起中断(无法登录,分析器中断)

mysql - 如何使用 docker 将大型或中等大小的 SQL 转储导入 Mysql/MariaDB