如何使用python脚本控制Docker

时间:2019-02-28 15:47:14

标签: python docker

例如python文件 example.py:

import os

containerId = "XXX"
command = "docker exec -ti " + containerId + "sh"
os.system(command)

当我使用“ python example.py”执行此文件时,我可以输入docker容器,但是我想在docker内部执行其他命令。

我尝试过:

import os

containerId = "XXX"
command = "docker exec -ti " + containerId + "sh"
os.system(command)
os.system("ps")

但是ps仅在我退出docker容器后在docker外部执行,而不能在docker内部执行。

所以我的问题是如何使用python shell在docker容器内执行命令。

顺便说一句,我正在使用python2.7。非常感谢。

1 个答案:

答案 0 :(得分:2)

如果可以轻松地预先定义要执行的命令,则可以将它们附加到docker run命令中,如下所示:

docker run --rm ubuntu:18.04 /bin/sh -c "ps"

现在,如果您已经有一个正在运行的容器,例如

docker run -it --rm ubuntu:18.04 /bin/bash

然后您可以使用docker exec做同样的事情:

docker exec ${CONTAINER_ID} /bin/sh -c "ps"

现在,在python中,可能看起来像这样:

import os

containerId = "XXX"
in_docker_command = "ps"
command = 'docker exec ' + containerId + ' /bin/sh -c "' + in_docker_command  + '"'
os.system(command)

如果您不想按照docker-py的建议安装外部依赖项,例如@Szczad,则此解决方案很有用