如何检查docker实例是否正在运行?
我正在使用Python来启动docker实例。
我如何确定它们是否正在运行? 我可以很容易地从terminal使用docker ps
,如:
docker ps | grep myimagename
如果这返回任何东西,图像正在运行。 如果它返回一个空string,图像不运行。
然而,我不明白如何获得subprocess.Popen
工作与此 – 它需要一个参数列表如下所示:
p = subprocess.Popen(['docker', 'ps', '|', 'grep', 'myimagename'], stdout=subprocess.PIPE) print p.stdout
不工作,因为它试图把“dockerps”,使“泊坞窗”和“PS”命令(泊坞窗不支持)。
看起来我完全可以给它完整的命令,因为Popen
试图将整个第一个参数作为可执行文件运行,所以失败了:
p = subprocess.Popen('docker ps | grep myimagename', stdout=subprocess.PIPE) print p.stdout
有没有办法从Python运行docker ps
? 我不知道是否尝试使用subprocess
是最好的路线。 正是我用它来运行docker集装箱,所以它似乎是正确的道路。
- 我怎样才能确定docker实例是否从Python脚本运行?
一个选项是使用subprocess.check_output设置shell=True
(感谢slezica!):
s = subprocess.check_output('docker ps', shell=True) print 'Results of docker ps' + s
如果docker ps
命令失败(例如你不启动check_output
-machine),那么check_output
将会抛出exception。
一个简单的查找可以validation你的容器是否被find/未find:
if s.find('containername') != -1: print 'found!' else: print 'not found.'
在这种情况下,我build议使用容器哈希ID,而不是容器名称 ,因为名称可能会复制到镜像名称或docker ps
其他结果中。
即使看起来像你在路上,我会build议你使用docker-py,因为它访问由docker创build的套接字来发出API请求。 我使用这个库目前使用这个库,它是实时的节省。