Как добавить параметры в Docker-контейнер с помощью Docker-Py - PullRequest
0 голосов
/ 02 апреля 2019

Я запускаю образ докера из приложения докера в течение ночи командой CMD с дополнительными параметрами. С помощью докера это можно сделать

docker run -p 8888:8888 -v ~/:/tmp/home/ my_image my_start_cmd.sh --no-browser --ip=0.0.0.0

Где my_start_cmd.sh --no-browser --ip=0.0.0.0 - мой CMD с параметрами.

Как мне запустить его из docker-py api, используя те же аргументы? Это мой оригинальный код на Python с использованием Docker API.

import docker

client = docker.from_env()
container = client.containers.run("my_image", detach=True)

for line in container.logs(stream=True):
    print (line.strip())

1 Ответ

0 голосов
/ 04 апреля 2019

Чтобы просто передать аргументы в Docker CMD, передать полную команду с аргументами и использовать сопоставление портов в качестве параметра dict как ports, достаточно в следующем примере:

import docker

client = docker.from_env()
container = client.containers.run(image='my_image',
  command="start-notebook.sh --no-browser --ip=0.0.0.0",
  ports={'8888': 8888}
)

Чтобы отобразить тома, в качестве исходной командной строки новый API низкого уровня (docker.APIClient ()) должен использоваться следующим образом:

client = docker.APIClient()
container = client.create_container(
            image='my_image',
            stdin_open=True,
            tty=False,
            command="start-notebook.sh --no-browser --ip=0.0.0.0",
            volumes=['~/', '/tmp/home/'],
            host_config=client.create_host_config(
                port_bindings={
                    8888: 8888,
                },
                binds={
                    ' ~/': {
                        'bind': '/tmp/home/',
                        'mode': 'rw',
                }
            }),
            ports=[8888],
            detach=True,
)
...