docker - 如何使用 puppet 杀死和删除 docker 容器
问题描述
我想使用 puppet 将计划的作业(每两周一次)添加到机器上,以删除机器上的所有容器。
目前我需要sudo docker rm -f $(sudo docker ps -a -q)
在 ssh 到我想要自动化的那台机器后手动执行。
最好使用模块:https ://forge.puppet.com/puppetlabs/docker 。看不到任何杀死和删除容器的选项(也是 puppet 的新手)。即使使用docker-compose
木偶也很好。
有任何想法吗?谢谢。
解决方案
您链接的文档说:
要删除正在运行的容器,请将以下代码添加到清单文件中。这也会删除与容器关联的 systemd 服务文件。
docker::run { 'helloworld': ensure => absent, }
关于通过 ssh 删除容器的 docker 命令sudo docker rm -f $(sudo docker ps -a -q)
,你有一个更好的:
$ docker container prune --help
Usage: docker container prune [OPTIONS]
Remove all stopped containers
Options:
--filter filter Provide filter values (e.g. 'until=<timestamp>')
-f, --force Do not prompt for confirmation
所以等价的将是:
docker container prune --force
您可以通过 puppet 自动执行此 ssh 命令,无需手动 ssh 进入机器。检查他们的文档以在不安装代理的情况下运行 shell 命令,或者如果您已经在远程主机上安装了代理,则使用Bolt 命令。
推荐阅读
- python - 如何在输入字符串中途重新开始计数?
- swift - 如何仅在快速滚动第 1 节后滚动 tableView 第 2 节
- debugging - MSYS2 中 libgcc 的调试符号
- api - 您可以使用 Google API 进行非 G Suite 组管理吗?
- javascript - 在使用该变量之前,我如何等待函数 (toString()) 完成?
- javascript - 如何在javascript中获取元属性
- python - 为什么我不能创建一个其列是两个浮点数列表的 DataFrame?
- android - 如何从Android项目中的包名中删除重复的com?
- php - 如何在使用包含时将字符串翻译为laravel刀片中的参数
- c# - 角度 8 中超出了最大调用堆栈大小