Как убить и удалить docker контейнеров с помощью марионетки - PullRequest
0 голосов
/ 24 апреля 2020

Я хотел бы добавить запланированное задание (раз в две недели) на машину, используя puppet, чтобы удалить все контейнеры на машине.

В настоящее время мне нужно выполнить sudo docker rm -f $(sudo docker ps -a -q) вручную после sshing на эту машину, которую я хочу для автоматизации.

Предпочтительно с использованием модуля: https://forge.puppet.com/puppetlabs/docker. Не вижу никакой возможности убивать и удалять контейнеры (также плохо знакомые с марионеткой). Даже с использованием docker-compose можно использовать марионетку.

Есть идеи? Спасибо.

1 Ответ

0 голосов
/ 24 апреля 2020

В связанных документах написано:

Чтобы удалить работающий контейнер, добавьте следующий код в файл манифеста. Это также удаляет файл службы systemd, связанный с контейнером.

docker::run { 'helloworld':
 ensure => absent,
}

Что касается команды docker sudo docker rm -f $(sudo docker ps -a -q) для удаления контейнеров через s sh, у вас есть лучший вариант:

$ 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

И вы можете автоматизировать эту команду s sh с помощью марионетки, не нужно вручную вводить s sh в машину. Проверьте их документы, чтобы запустить команды оболочки без установки агента или использовать команду Bolt , если на удаленном хосте уже установлен агент.

...