我正在使用Python启动docker实例。
如何确定它们是否在运行?我可以很容易地从终端使用docker ps
,例如:
docker ps | grep myimagename
如果返回任何信息,那么这个镜像正在运行。如果返回空字符串,则表示该镜像未在运行。
然而,我不知道如何使用 subprocess.Popen
实现这个功能 - 它需要一个参数列表,类似于:
p = subprocess.Popen(['docker', 'ps', '|', 'grep', 'myimagename'], stdout=subprocess.PIPE)
print p.stdout
由于它试图将“docker ps”变成“docker”和“ps”命令(docker不支持),所以它无法工作。
似乎我也不能给它完整的命令,因为Popen
尝试将整个第一个参数作为可执行文件运行,所以这会失败:
p = subprocess.Popen('docker ps | grep myimagename', stdout=subprocess.PIPE)
print p.stdout
有没有一种方法可以从Python中实际运行docker ps
?我不知道尝试使用subprocess
是否是最好的路线。然而,这是我用来运行docker容器的方法,因此似乎是正确的路径。
- 如何确定Python脚本是否正在运行Docker实例?
| grep
部分,可以在python
中完成。否则,shell = True
参数对Popen()
有帮助吗?请参阅此处。 - salezicasubprocess.check_output(cmd, shell=True)
周围使用try/except块,我可以使用另一个示例来使其工作 - 这感觉...很不专业,所以我想认为有更好的方法(当没有找到匹配项时,显然会返回非0代码,因此check_output会抛出异常)。 - enderland