首页 > 解决方案 > 如何使用 puppet 杀死和删除 docker 容器

问题描述

我想使用 puppet 将计划的作业(每两周一次)添加到机器上,以删除机器上的所有容器。

目前我需要sudo docker rm -f $(sudo docker ps -a -q)在 ssh 到我想要自动化的那台机器后手动执行。

最好使用模块:https ://forge.puppet.com/puppetlabs/docker 。看不到任何杀死和删除容器的选项(也是 puppet 的新手)。即使使用docker-compose木偶也很好。

有任何想法吗?谢谢。

标签: dockerdocker-composepuppet

解决方案


您链接的文档说:

要删除正在运行的容器,请将以下代码添加到清单文件中。这也会删除与容器关联的 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 命令。


推荐阅读