【问题标题】:How to add parameters to docker container using docker-py如何使用 docker-py 向 docker 容器添加参数
【发布时间】:2019-08-23 22:54:52
【问题描述】:

我在夜间使用带有附加参数的 CMD 命令从 docker 应用程序启动 docker 映像。 使用docker就可以完成

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 运行它? 这是我使用 docker api 的原始 python 代码。

import docker

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

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

【问题讨论】:

    标签: python python-3.x docker dockerpy


    【解决方案1】:

    要简单地将参数传递给 docker CMD,传递带有参数的完整命令,并将端口映射用作 dict 作为端口参数就足够了,如下例所示:

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

    要映射卷,必须使用新的Low Level 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,
    )
    
    # To start the container and print the output
    client.start(container=container.get('Id'))
    print(response)
    

    【讨论】:

    • 这似乎可以正确创建容器,但不会运行它。那么如何让它运行呢?
    • 你可以试试 response = client.start(container=container.get('Id')) print(response)
    猜你喜欢
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2020-12-10
    • 1970-01-01
    • 2020-05-25
    • 2018-03-05
    相关资源
    最近更新 更多