首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用docker-py向docker容器添加参数

如何使用docker-py向docker容器添加参数
EN

Stack Overflow用户
提问于 2019-04-02 22:53:40
回答 1查看 1.9K关注 0票数 1

我正在使用带有附加参数的CMD命令从docker应用程序启动一个docker镜像。使用docker可以做到

代码语言:javascript
复制
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代码。

代码语言:javascript
复制
import docker

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

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

回答 1

Stack Overflow用户

发布于 2019-04-05 04:16:25

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

代码语言:javascript
复制
    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())作为原始命令行,如下所示:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55477742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档