img

Podman Compose – управление контейнерами

Введение

Podman – это механизм управления OCI-контейнерами, который не требует запуска демон-процесса. Он нацелен на то, чтобы заменить все функции Docker путем реализации соответствующих функций управления контейнерами или с помощью других утилит, например, Buildah и Skopeo. 

Из этой стать вы узнаете, что такое Podman Compose – инструмент, подобный Docker Compose, для запуска мультиконтейнерных приложений.

Предварительные требования:

  • На компьютере под управлением Linux/macOS/Windows должен быть установлен Podman с помощью WSL2.
  • Должен быть установлен Python 3 и pip.
  • Доступ к системе управления.

Что такое Podman Compose?

Podman Compose – это реализация Docker Compose, но только для Podman. Это инструмент, который облегчает развертывание взаимосвязанных контейнеров за счет того, что он группирует все необходимые инструкции в один YAML-файл. Podman Compose разработан таким образом, что он полностью совместим с YAML-файлами Docker Compose, а его функциональность позволяет управляться с Podman, у которого нет ни корня, ни демона. 

Как установить Podman Compose?

Вы можете установить Podman Compose либо с помощью диспетчера пакетов pip, либо с помощью Python-сценария. А репозитории Fedora, начиная с версии 31, содержат такой пакет, как podman-compose. В связи с этим вы можете установить этот инструмент в Fedora с помощью диспетчера пакетов DNF. В следующих разделах мы описали все три способа.

Примечание: если у вас установлена версия Podman, которая старше, чем 3.1.0, то установите более старую ветку 0.1.x.

Установка Podman Compose с помощью pip

Для того, чтобы установить Podman Compose с помощью pip, в первую очередь вам нужно обновить пакеты pip до последней версии:

sudo -H pip3 install --upgrade pip

Updating pip packages.

Установите последнюю стабильную версию Podman Compose:

pip3 install podman-compose

Команда установит Podman Compose, который будет доступен для всех пользователей.

Installing podman-compose with pip3.

Если вы хотите установить его для какого-то конкретного пользователя, то добавьте флаг --user:

pip3 install podman-compose --user

Последнюю разрабатываемую версию Podman Compose можно найти на GitHub. Вы можете установить ее с помощью следующей команды:

sudo pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz

Вывод этой команды должен подтвердить успешную установку. 

Installing the latest development version of podman-compose with pip3.

Если вы хотите ограничить возможность установки разрабатываемой версии Podman Compose до какого-то конкретного пользователя, то выполните вышеупомянутую команду без sudo

Установка Podman Compose с помощью Pythn-сценария

Вы можете установить последнюю разрабатываемую версию Podman Compose путем загрузки предварительно скомпилированного Python-сценария. Этот сценарий вы можете найти на странице проекта на GitHub:

sudo curl -o /usr/local/bin/podman-compose https://raw.githubusercontent.com/containers/podman-compose/devel/podman_compose.py

Команда curl загружает файл в каталог /usr/local/bin.

Installing the latest development version of podman-compose using the Python script.

Выполните файл, набрав:

chmod +x /usr/local/bin/podman-compose

Если вы хотите, чтобы Podman Compose располагался внутри вашего главного каталога, то воспользуйтесь той же командой curl, но измените место установки:

curl -o ~/.local/bin/podman-compose https://raw.githubusercontent.com/containers/podman-compose/devel/podman_compose.py

После того, как загрузка завершится, определите права доступа для файла:

chmod +x ~/.local/bin/podman-compose

Установка Podman Compose на Fedora версии 31 и старше

Если вы используете Fedora 31 или более позднюю версию этой операционной системы, то вы можете установить Podman Compose непосредственно из репозиториев Fedora. Для этого вам нужен диспетчер пакетов DNF:

sudo dnf install podman-compose

Как пользоваться Podman Compose?

Процесс развертывания приложения с помощью Podman Compose аналогичен процессу развертывания посредством Docker Compose. Этот процесс предполагает создание файла compose.yml, который содержит инструкции по развертыванию приложения для Podman.

Ниже приведен пример развертывания экземпляра медиасервера Plex с помощью Podman Compose.

  1. Создаем каталог для файла compose.yml и переходим в него.
mkdir plex-test && cd plex-test
  1. С помощью текстового редактора создаем файл compose.yml.
nano compose.yml
  1. В файле определяем параметры развертывания. Ниже приведен пример, определяющий необходимые конфигурации для сервера Plex:
services:
  plex:
    image: docker.io/linuxserver/plex
    container_name: plex
    network_mode: host
    environment:
      - VERSION=podman
    restart: always
    volumes:
      - ${PLEX_MEDIA_PATH}:/media/

Поле services.plex.image содержит ссылку на образ Plex на Docker Hub. Кроме того, файл определяет наименование контейнера и переменные среды, а также создает тома для постоянного хранилища данных. 

После того, как вы закончите редактировать файл, сохраните его и закройте. 

  1. Выполните следующую команду внутри каталога, в котором хранится файл compose.yml:
podman-compose up

Когда пользователь выполнит команду podman-compose up, Podman Compose выполнит ряд действий:

  • Создаст модуль, имя которого будет соответствовать имени текущего каталога.
  • Проверит тома, которые были указаны в файле compose.yml, на предмет существования и создаст недостающие.
  • Создаст контейнер для каждой службы, определенной в файле compose.yml.
  • Добавит контейнеры в модуль.

После того, как весь процесс будет завершен, Plex отобразит сообщение, в котором будет содержаться адрес доступа к веб-интерфейсу.

The Plex startup message containing the address for accessing the web UI.

Пусть Plex останется запущенным в терминальном окне. 

Откройте другое терминальное окно и проверьте развертывание по списку запущенных в системе модулей:

podman pod ls

В списке должен отобразиться модуль pod plex-test. Внутри этого модуля находится всего один контейнер, на котором запущен сервер Plex:

Listing available pods in Podman.

С помощью браузера перейдите по адресу из сообщения о запуске Plex:

http://localhost:32400/web

Браузер перенаправит вас на страницу входа в систему Plex.

The Plex sign in screen in Firefox.

Проверка запущенных контейнеров

Введите команду, представленную ниже, для того, чтобы получить список контейнеров, которые создал Podman Compose:

podman ps

В результате вы увидите, что запущен контейнер под названием plex. Название определяется в файле compose.yml.

Listing running containers in Podman.

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

Стандартный метод остановки контейнеров в Podman подразумевает использование команды podman stop:

podman stop [container-id]

Stoping a container in Podman.

И все-таки, иногда контейнеров может быть слишком много, чтобы останавливать их вручную. С помощью следующей команды вы можете остановить все контейнеры, которые имеют отношения к конкретному развертыванию Podman Compose:

podman-compose down

В результате вы увидите, что Podman Compose остановил и удалил все развернутые контейнеры. Модуль, который содержал эти контейнеры, также был удален. 

The output of the podman-compose down command.

Отключение и удаление модулей

Помимо всего прочего, вы можете отключать и удалять модули, которые были созданы Podman Compose. Для того, чтобы отключить модуль, введите следующее:

podman pod stop [pod-name-or-id]

В результате вы увидите полный ID модуля, что говорит о том, что он был успешно удален.

Stopping a pod in Podman.

Сервер Plex остановится и вернет вас к командной строке.

The Plex server exiting to the command prompt.

Удалить отключенные модули можно с помощью команды podman pod:

podman pod rm [pod-name-or-id]

Removing a pod in Podman.

Заключение

В этом руководстве мы продемонстрировали то, как можно использовать Podman Compose для развертывания приложения в вашей системе. 

Здесь мы рассказали о трех способах, как установить Podman Compose, а также изложили инструкции по управлению контейнерами. 

Ссылка
скопирована
Программирование
Скидка 25%
Python Advanced. Продвинутый курс
Освойте асинхронное и метапрограммирование, изучите аннотацию типов и напишите собственное приложение на FastAPI. Улучшите свои навыки Python, чтобы совершить быстрый рост вашего грейда до уровня middle.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Когда я только познакомился с GitHub, я даже не представлял, что это такое README-файл и какую функцию он выполняет. Между нами
img
«Чистые функции» и «нечистые функции» - эти два термина программирования, которые вы можете довольно часто встречать в рамках фу
img
Конечно, распределенные системы и системы на основе микрослужб вносят большой вклад и позволяют расширить ваши возможности, но п
img
  Если вы хотите добавить какое-то значение в ячейку, и это зависит от некоторого условия, завязанного на других ячейках, то вам
img
React.js – это библиотека с открытым исходным кодом, основанная на JavaScript, которая предназначена для разработки пользователь
img
  Работа со сценариями PowerShell может оказаться захватывающим приключением. Ведь он предоставляет вам чистый интерфейс для т
Комментарии
ЛЕТНИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59