从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调用中的单个元素。