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

问题描述 投票:1回答:1

有人可以分享一些py apis显示如何挂载目录的例子吗?我试过这样但是我看不到它的工作原理

dockerClient = docker.from_env()
dockerClient.containers.run('image', 'ls -ltr', volumes={os.getcwd(): {'bind': '/tmp/', 'mode': 'rw'}})
python python-2.7 docker dockerpy
1个回答
2
投票

By getting the container object

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

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 param作为True

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

By setting streams

获取输出的另一种方法是将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获得。

By using subprocess

如果要执行某些操作并动态获取其输出,则可以使用subprocess模块。

import subprocess

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

文档:


推荐问答