从python运行一个docker容器

我试图“移植”这个(工作)的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'. 

有什么build议么?

在参数中join空格的地方应该是列表中的不同元素。 它认为"--name myname"是一个单一的标志。 你有没有尝试过:

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

Docker的python库公开了Docker API,所以你可以用编程的方式处理容器,调用它们的方法等等。

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

如果你想坚持subprocess的方式,你需要把每个参数放到你传递给check_output()的列表中的一个单独的元素中。 请注意,参数之间用空白分隔,无论一个参数是否是一个开关的值,例如--name name – 这些仍然是两个参数。 当然,如果参数是用引号分组的,例如--name "a name" ,那么整个a name部分就是subprocess调用中的单个元素。