在docker中,可以利用“Docker ps”命令检测docker是否正常运行,该命令用于列出容器,返回结果有内容表示正在运行,返回结果无内容表示未运行,语法为“docker ps | grep myimagename”。
本教程操作环境:linux7.3系统、docker-1.13.1版、Dell G3电脑。
怎样检测docker是否正常运行
docker ps : 列出容器
语法
1
docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
如何确定他们是否在跑步?我可以很容易地从终端使用docker ps,比如:
1
docker ps | grep myimagename
如果返回任何内容,则图像正在运行。如果返回空字符串,则表示图像未运行。
但是,我不明白如何让subprocess.Popen来处理这个问题-它需要一个参数列表所以类似于:
1
2
p = subprocess.Popen(['docker', 'ps', '|', 'grep', 'myimagename'], stdout=subprocess.PIPE)
print p.stdout
无法工作,因为它试图获取“docker ps”并使其成为“docker”和“ps”命令(docker不支持)。
似乎我也不能给它完整的命令,因为Popen试图将整个第一个参数作为可执行文件运行,所以这失败了: