如何使用python脚本控制docker

如何使用python脚本控制docker,python,docker,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 exe

例如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。非常感谢。

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

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

containerId = "XXX"
in_docker_command = "ps"
command = 'docker exec ' + containerId + ' /bin/sh -c "' + in_docker_command  + '"'
os.system(command)
现在,如果您已经有一个正在运行的容器,例如

docker run -it --rm ubuntu:18.04 /bin/bash
然后您可以对docker exec执行相同的操作:

docker exec ${CONTAINER_ID} /bin/sh -c "ps"
现在,在
python
中,这可能看起来像这样:

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

containerId = "XXX"
in_docker_command = "ps"
command = 'docker exec ' + containerId + ' /bin/sh -c "' + in_docker_command  + '"'
os.system(command)
如果您不想安装外部依赖项(如

所建议的),此解决方案非常有用。您是否尝试过此解决方案?