Ansible

Как остановить все контейнеры Docker с помощью Ansible

Как остановить все контейнеры Docker с помощью Ansible
В Ansible есть множество модулей для автоматизации хоста Docker, контейнеров, томов, сетей и т. Д. Если вы хотите остановить свои запущенные контейнеры Docker, вы также можете это сделать.

В этой статье я покажу вам, как остановить конкретный контейнер Docker. Я также собираюсь показать вам, как остановить все запущенные контейнеры Docker или все контейнеры Docker, на которых запущен определенный образ Docker, с помощью Ansible. Итак, приступим.

Предпосылки:

Если вы хотите попробовать примеры из этой статьи,

1) На вашем компьютере должен быть установлен Ansible.
2) У вас должен быть установлен Docker на вашем компьютере или удаленном хосте Ubuntu.
3) У вас должна быть установлена ​​библиотека Python Docker на вашем хосте Docker.
4) Вы должны настроить хост Docker для автоматизации Ansible.

ПРИМЕЧАНИЕ: Хост Docker это компьютер, на котором установлен Docker.

На LinuxHint есть много статей, посвященных установке Ansible и настройке хостов для автоматизации Ansible и установке Docker. Вы можете проверить их при необходимости.

Создание каталога проекта:

Чтобы упорядочить все файлы и каталоги, которые мы будем создавать в этой статье, рекомендуется создать каталог проекта.

Чтобы создать каталог проекта docker1 / в вашем текущем рабочем каталоге выполните следующую команду:

$ mkdir -pv docker1 / плейбуки

Теперь перейдите к docker1 / каталог проекта следующим образом:

$ cd docker1 /

Настройка Ansible для автоматизации удаленного хоста Docker:

Если у вас установлен Docker на удаленном хосте Ubuntu, который вы хотите автоматизировать с помощью Ansible, то этот раздел для вас.

Сначала создайте файл инвентаризации Ansible хозяева с помощью следующей команды:

$ nano хосты

Теперь добавьте IP-адрес или DNS-имя вашего хоста Docker в хозяева инвентарный файл следующим образом.

[докер]
vm4.нодекит.ком

В моем случае DNS-имя моего хоста Ubuntu Docker vm4.нодекит.ком. Для тебя будет иначе. Поэтому не забудьте заменить его при необходимости.

Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти хозяева файл.

Теперь создайте файл конфигурации Ansible анзибль.cfg следующим образом:

$ нано доступный.cfg

Теперь введите следующие строки в анзибль.cfg конфигурационный файл.

[докер]
vm4.нодекит.ком

Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти анзибль.cfg файл.

Теперь проверьте, можете ли вы пропинговать удаленный хост Docker со своего компьютера с помощью следующей команды:

$ ansible all -u ansible -m пинг

Как видите, я могу проверить связь со своим удаленным хостом Docker.

Как видите, у меня Docker 19.03.11 установлен на моем удаленном хосте Ubuntu Docker.

Теперь у вас должна быть установлена ​​библиотека Python Docker на удаленном хосте Docker, чтобы модули докеров Ansible работали. В этой статье я использую Ubuntu. Итак, вот что я расскажу.

Чтобы установить библиотеку Python Docker на удаленный хост Docker (Ubuntu), создайте новую книгу воспроизведения Ansible install_docker_python_lib.ямл в пьесы / каталог следующим образом:

$ nano playbooks / install_docker_python_lib.ямл

Теперь введите следующие строки в install_docker_python_lib.ямл файл.

- хосты: докер
пользователь: ansible
становятся истинными
задачи:
- name: убедитесь, что установлен пакет python3-docker
apt:
имя: python3-docker
состояние: настоящее
update_cache: Истина

Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти install_docker_python_lib.ямл файл.

Теперь запустите install_docker_python_lib.ямл playbook следующим образом:

плейбуки $ ansible-playbook / install_docker_python_lib.ямл

Плейбук должен работать успешно, и он установит библиотеку Python Docker на ваш удаленный хост Docker.

Настройка Ansible для автоматизации локального хоста Docker:

Если у вас установлен Docker на хосте, на котором установлен Ansible, и вы хотите автоматизировать его с помощью Ansible, то этот раздел для вас.

Сначала создайте новую пьесу Ansible install_docker_python_lib.ямл в пьесы / каталог следующим образом:

$ nano playbooks / install_docker_python_lib.ямл

Теперь введите следующие строки в install_docker_python_lib.ямл файл.

- хосты: localhost
подключение: местное
пользователь: shovon
становятся истинными
задачи:
- name: убедитесь, что установлен пакет python3-docker
apt:
имя: python3-docker
состояние: настоящее
update_cache: Истина

Здесь строка пользователь: shovon наборы Шовон как пользователь, который будет выполнять задачи. Для тебя будет иначе. Итак, не забудьте изменить его на свое имя пользователя для входа.

Вы можете найти имя пользователя вашего хоста Docker с помощью следующей команды:

$ whoami

Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти install_docker_python_lib.ямл файл.

Теперь запустите install_docker_python_lib.ямл playbook следующим образом:

$ ansible-playbook --ask-pass --ask-стать-пройти
playbooks / install_docker_python_lib.ямл

Ansible запросит у вас пароль для входа в систему пользователя, которого вы указали в playbook. Введите пароль для входа и нажмите .

Ansible также попросит вас ввести пароль BECOME / sudo. Это должен быть тот же пароль, что и ваш пароль для входа. Итак, оставьте его пустым и нажмите .

Плейбук должен начать работать. Это может занять некоторое время.

На этом этапе playbook должен быть успешным и должна быть установлена ​​библиотека Python Docker.

Внесение необходимых корректировок в учебники:

В зависимости от того, управляете ли вы контейнерами Docker на локальном хосте Docker или на удаленном хосте Docker, вам необходимо соответствующим образом настроить свои плейбуки.

В следующих разделах этой статьи я буду запускать примеры playbook на удаленном хосте Docker. Итак, все пьесы будут начинаться со следующих строк:

- хосты: докер
пользователь: ansible
задачи:

Если вы хотите запустить плейбуки на локальном хосте Docker, убедитесь, что плейбуки начинаются со следующих строк.

- хосты: localhost
подключение: местное
пользователь: shovon
становятся истинными
задачи:

Затем замените с задачами, которые вы хотите запустить, и сохраните playbook, нажав + Икс с последующим Y а также .

Вам также нужно запускать сценарии Ansible немного по-другому, если вы собираетесь управлять хостом Docker локально с помощью Ansible.

Вы можете запустить Ansible playbook локально следующим образом:

$ ansible-playbook --ask-pass --ask-стать-пройти

Обязательно измените на путь к YAML-файлу Ansible playbook.

Остановка контейнера Docker:

Если у вас запущен контейнер Docker и вы знаете идентификатор или имя контейнера Docker, вы можете легко остановить этот контейнер Docker с помощью Ansible.

В этом разделе я покажу вам, как это сделать.

Сначала я собираюсь создать Nginx (имя образа) Контейнер Docker http_server1 (название контейнера) следующим образом:

$ docker run -p 8080: 80 -d - имя http_server1 nginx

Как видите, контейнер Docker http_server1 это работает.

$ docker ps

Чтобы остановить контейнер Docker http_server1 используя Ansible, создайте новую пьесу stop_container.ямл в пьесы / каталог следующим образом:

$ nano playbooks / stop_container.ямл

Затем введите следующие строки в stop_container.ямл учебник.

- хосты: докер
пользователь: ansible
задачи:
- name: остановить контейнер http_server1
docker_container:
имя: http_server1
состояние: остановлено

Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти stop_container.ямл файл.

Здесь Ансибл docker_container модуль используется для остановки контейнера Docker http_server1.

Теперь запустите stop_container.ямл playbook с помощью следующей команды:

плейбуки $ ansible-playbook / stop_container.ямл

Как видите, контейнер Docker http_server1 больше не работает на моем удаленном хосте Docker.

$ docker ps

Вы можете перечислить все контейнеры Docker (запущенные, приостановленные, остановленные) с помощью следующей команды:

$ docker ps - все

Как видите, остановленный контейнер Docker http_server1 перечислен.

Остановка всех запущенных контейнеров Docker:

Если вы хотите остановить все контейнеры Docker, работающие на вашем хосте Docker, с помощью Ansible, тогда этот раздел для вас.

Сначала я собираюсь создать 3 контейнера Docker (server1, server2, а также server3), чтобы я мог остановить их всех, используя Ansible позже.

Для создания server1 Контейнер Docker, выполните следующую команду:

$ docker run -p 8081: 80 -d --name server1 nginx

Для создания server2 Контейнер Docker, выполните следующую команду:

$ docker run -p 8082: 80 -d --name server2 nginx

Для создания server3 Контейнер Docker, выполните следующую команду:

$ docker run -p 8083: 80 -d --name server3 nginx

Как видите, server1, server2, а также server3 Контейнеры Docker работают на моем удаленном хосте Docker.

$ docker ps

Чтобы остановить все эти контейнеры Docker, создайте новую книгу stop_all_container.ямл в твоей пьесы / каталог следующим образом:

$ nano playbooks / stop_all_container.ямл

Теперь введите следующие строки в stop_all_container.ямл файл playbook.

- хосты: докер
пользователь: ansible
задачи:
- name: получить список всех запущенных контейнеров
docker_host_info:
контейнеры: True
зарегистрироваться: docker_info
- имя: Остановить все запущенные контейнеры
docker_container:
name: 'item.Имена [0] | regex_replace ("^ /", "") '
состояние: остановлено
цикл: 'docker_info.контейнеры '

Чтобы спасти stop_all_container.ямл файл, нажмите + Икс с последующим Y а также .

Здесь я определил 2 задачи.

Первая задача использует Ansible docker_host_info модуль, чтобы получить список всех запущенных контейнеров Docker и сохранить его в docker_info Переменная.

Вторая задача проходит через docker_info.контейнеры array находит имена запущенных контейнеров Docker и останавливает их одно за другим.

Теперь запустите stop_all_container.ямл playbook с помощью следующей команды:

плейбуки $ ansible-playbook / stop_all_container.ямл

Плейбук должен успешно работать, как вы можете видеть на скриншоте ниже.

Как видите, на моем удаленном хосте Docker нет запущенных контейнеров Docker.

$ docker ps

Вы можете перечислить все контейнеры Docker (запущенные, приостановленные, остановленные) с помощью следующей команды:

$ docker ps - все

Как видите, остановленные контейнеры Docker server1, server2, и server3 перечислены.

Остановить все контейнеры Docker, запускающие определенный образ:

Если вы хотите остановить все контейнеры Docker, на которых запущен определенный образ Docker, то этот раздел для вас.

Во-первых, давайте создадим несколько фиктивных контейнеров Docker.

Я создам 2 контейнера Docker (nginx1 а также nginx2) с помощью Nginx Образ Docker и 2 контейнера Docker (http1 а также http2) с помощью httpd Образ Docker для демонстрации.

Для создания nginx1 Контейнер Docker, использующий Nginx Образ Docker, выполните следующую команду:

$ docker run -d -p 8081: 80 --name nginx1 nginx

Для создания nginx2 Контейнер Docker, использующий Nginx Образ Docker, выполните следующую команду:

$ docker run -d -p 8082: 80 --name nginx2 nginx

Для создания http1 Контейнер Docker, использующий httpd Образ Docker, выполните следующую команду:

$ docker run -d -p 8091: 80 --name http1 httpd

Для создания http2 Контейнер Docker, использующий httpd Образ Docker, выполните следующую команду:

$ docker run -d -p 8092: 80 --name http2 httpd

Как видите, nginx1, nginx2, http1, а также http2 Контейнеры Docker работают на моем удаленном хосте Docker.

Чтобы остановить все контейнеры Docker, работающие с определенным образом Docker (скажем,, nginx), создайте новую книгу для Docker stop_all_image_containers.ямл в пьесы / каталог следующим образом:

$ nano playbooks / stop_all_image_containers.ямл

Теперь введите следующие строки в stop_all_image_containers.ямл файл.

- хосты: докер
пользователь: ansible
задачи:
- name: получить список всех запущенных контейнеров
docker_host_info:
контейнеры: True
зарегистрироваться: docker_info
- name: Остановить все контейнеры, в которых запущен образ nginx
docker_container:
name: 'item.Имена [0] | regex_replace ("^ /", "") '
состояние: остановлено
когда: элемент.Изображение == 'nginx'
цикл: 'docker_info.контейнеры '

Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти stop_all_image_containers.ямл файл.

Здесь я добавил 2 задачи.

Первая задача использует Ansible docker_host_info модуль, чтобы получить список всех запущенных контейнеров Docker и сохранить его в docker_info Переменная.

Вторая задача проходит через docker_info.контейнеры массив находит имена запущенных контейнеров Docker и запускает docker_container модуль для каждого запущенного контейнера, только если имя образа контейнера Nginx. Затем он останавливает соответствующие контейнеры Docker.

Во второй задаче следующая строка используется для проверки того, работает ли в контейнере Docker Nginx изображение. Вы можете изменить его на другое имя образа Docker, если хотите.

Теперь запустите stop_all_image_containers.ямл playbook следующим образом:

плейбуки $ ansible-playbook / stop_all_image_containers.ямл

Как видите, только Nginx контейнеры (nginx1 а также nginx2) изменены (остановлены). В httpd контейнеры (http1 а также http2) пропускаются.

Как видите, нет Nginx Контейнеры Docker работают на моем удаленном хосте Docker. Только httpd Контейнеры Docker (http1 а также http2) это работает.

$ docker ps

Вы можете перечислить все контейнеры Docker (запущенные, приостановленные, остановленные) с помощью следующей команды:

$ docker ps - все

Как видите, остановленные контейнеры Docker nginx1 и nginx2 перечислены.

Заключение:

В этой статье я показал вам, как остановить работающий контейнер Docker, все контейнеры Docker, на которых запущен определенный образ Docker, и все запущенные контейнеры Docker вашего хоста Docker. Для этого я использовал Ansible docker_container а также docker_host_info модули в этой статье.

Чтобы узнать больше об этих модулях, посетите следующие страницы официальной документации Ansible.

[1] docker_container - Управление контейнерами докеров
[2] docker_host_info - Извлекает факты о хосте докеров и списки объектов сервисов

Обзор беспроводной мыши Microsoft Sculpt Touch
Я недавно прочитал о Microsoft Sculpt Touch беспроводная мышь и решил ее купить. Побывав некоторое время, я решил поделиться своим опытом с ним. Эта б...
Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...