докер python как смонтировать каталог с хоста на контейнер - PullRequest
0 голосов
/ 14 февраля 2019

Может кто-нибудь поделиться некоторыми примерами py apis, показывающими, как монтировать каталоги?Я пытался так, но я не вижу его работы

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

1 Ответ

0 голосов
/ 14 февраля 2019

Получая объект контейнера

Измените свой код в соответствии со следующим:

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.

. Затем он может распечатать результат выполненной команды.

Путем установки потоков

Другой способ получить выходные данные - установить для параметра stream значение True, которое возвращает генератор журнала вместо строки.Игнорируется, если значение detach равно 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 - это оболочка вокруг API механизма докера.Следовательно, все выполняется внутри контейнера, и результат выполнения доступен через REST.

Используя подпроцесс

Вы можете использовать модуль subprocess, если хотите выполнить что-то и получить его выводна лету.

import subprocess

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

Док:

...