从python运行docker容器

问题描述 投票:0回答:2

我试图'移植'这个(工作)shell命令:

IMAGE_NAME="myimage"
CONTAINER_NAME="myname"
docker run -d --name $CONTAINER_NAME $IMAGE_NAME tail -f /dev/null

使用以下命令从图像到python启动容器:

import subprocess
IMAGE_NAME="myimage"
CONTAINER_NAME="myname"
subprocess.check_output(['docker', 'run',"-d","--name %s" % CONTAINER_NAME,"%s" % IMAGE_NAME])

但如果失败了:

unknown flag: --name myname
See 'docker run --help'.

有什么建议?

python docker
2个回答
2
投票

在参数中放置空格的任何地方应该是列表中的不同元素。它认为"--name myname"是一面旗帜。你有没有尝试过:

subprocess.check_output(['docker', 'run', '-d', '--name', CONTAINER_NAME, IMAGE_NAME])

3
投票

Docker的python库暴露了Docker API,因此您可以以编程方式处理容器,调用它们上的方法等。

https://github.com/docker/docker-py

如果您想坚持使用子进程方式,则需要将每个参数放在传递给check_output()的列表中的单独元素中。请注意,参数由空格分隔,无论一个参数是否为开关的值,如--name name - 这些仍然是两个参数。当然,如果参数用引号分组,例如--name "a name",然后整个a name部分将是子进程调用中的单个元素。

© www.soinside.com 2019 - 2024. All rights reserved.