调用docker命令行从python中删除所有容器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了调用docker命令行从python中删除所有容器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1922字,纯文字阅读大概需要3分钟。
内容图文
![调用docker命令行从python中删除所有容器](/upload/InfoBanner/zyjiaocheng/789/2002d2d1a15f44348212b24640995d51.jpg)
我想尝试移植:
https://coderwall.com/p/ewk0mq/stop-remove-all-docker-containers
到python脚本.到目前为止,我有:
def remove_all_containers():
subprocess.call(['docker', 'stop','$(docker ps -a -q)'])
subprocess.call(['docker', 'rm','$(docker ps -a -q)'])
return;
但得到:
Error response from daemon: No such container: $(docker ps -a -q)
我也尝试过:
def remove_all_containers():
subprocess.call(['docker', 'stop',$(docker ps -a -q)])
subprocess.call(['docker', 'rm',$(docker ps -a -q)])
return;
但是这给了:
subprocess.call(['docker', 'stop',$(docker ps -a -q)])
SyntaxError: invalid syntax
似乎我需要将另一个子进程调用嵌套到父子进程调用中.或者有更简单的方法吗?
解决方法:
TL; DR:命令替换$(…)是shell功能,因此您必须在shell上运行命令:
subprocess.call('docker stop $(docker ps -a -q)', shell=True)
subprocess.call('docker rm $(docker ps -a -q)', shell=True)
其他改进:
这不是必需的,但我建议使用check_call(或run(…,check = True),见下文)而不是call(),这样如果发生错误,它不会被忽视:
subprocess.check_call('docker stop $(docker ps -a -q)', shell=True)
subprocess.check_call('docker rm $(docker ps -a -q)', shell=True)
你也可以去另一条路线:解析docker ps -a -q的输出,然后传递给stop和rm:
container_ids = subprocess.check_output(['docker', 'ps', '-aq'], encoding='ascii')
container_ids = container_ids.strip().split()
if container_ids:
subprocess.check_call(['docker', 'stop'] + container_ids])
subprocess.check_call(['docker', 'rm'] + container_ids])
如果您使用的是Python 3.5,还可以使用较新的run()功能:
# With shell
subprocess.run('docker stop $(docker ps -a -q)', shell=True, check=True)
subprocess.run('docker rm $(docker ps -a -q)', shell=True, check=True)
# Without shell
proc = subprocess.run(['docker', 'ps', '-aq'], check=True, stdout=PIPE, encoding='ascii')
container_ids = proc.stdout.strip().split()
if container_ids:
subprocess.run(['docker', 'stop'] + container_ids], check=True)
subprocess.run(['docker', 'rm'] + container_ids], check=True)
内容总结
以上是互联网集市为您收集整理的调用docker命令行从python中删除所有容器全部内容,希望文章能够帮你解决调用docker命令行从python中删除所有容器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。