Введение
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
Установите последнюю стабильную версию Podman Compose:
pip3 install podman-compose
Команда установит Podman Compose, который будет доступен для всех пользователей.
Если вы хотите установить его для какого-то конкретного пользователя, то добавьте флаг --user:
pip3 install podman-compose --user
Последнюю разрабатываемую версию Podman Compose можно найти на GitHub. Вы можете установить ее с помощью следующей команды:
sudo pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz
Вывод этой команды должен подтвердить успешную установку.
Если вы хотите ограничить возможность установки разрабатываемой версии 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.
Выполните файл, набрав:
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.
- Создаем каталог для файла compose.yml и переходим в него.
mkdir plex-test && cd plex-test
- С помощью текстового редактора создаем файл compose.yml.
nano compose.yml
- В файле определяем параметры развертывания. Ниже приведен пример, определяющий необходимые конфигурации для сервера 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. Кроме того, файл определяет наименование контейнера и переменные среды, а также создает тома для постоянного хранилища данных.
После того, как вы закончите редактировать файл, сохраните его и закройте.
- Выполните следующую команду внутри каталога, в котором хранится файл compose.yml:
podman-compose up
Когда пользователь выполнит команду podman-compose up, Podman Compose выполнит ряд действий:
- Создаст модуль, имя которого будет соответствовать имени текущего каталога.
- Проверит тома, которые были указаны в файле compose.yml, на предмет существования и создаст недостающие.
- Создаст контейнер для каждой службы, определенной в файле compose.yml.
- Добавит контейнеры в модуль.
После того, как весь процесс будет завершен, Plex отобразит сообщение, в котором будет содержаться адрес доступа к веб-интерфейсу.
Пусть Plex останется запущенным в терминальном окне.
Откройте другое терминальное окно и проверьте развертывание по списку запущенных в системе модулей:
podman pod ls
В списке должен отобразиться модуль pod plex-test. Внутри этого модуля находится всего один контейнер, на котором запущен сервер Plex:
С помощью браузера перейдите по адресу из сообщения о запуске Plex:
http://localhost:32400/web
Браузер перенаправит вас на страницу входа в систему Plex.
Проверка запущенных контейнеров
Введите команду, представленную ниже, для того, чтобы получить список контейнеров, которые создал Podman Compose:
podman ps
В результате вы увидите, что запущен контейнер под названием plex. Название определяется в файле compose.yml.
Остановка контейнеров
Стандартный метод остановки контейнеров в Podman подразумевает использование команды podman stop:
podman stop [container-id]
И все-таки, иногда контейнеров может быть слишком много, чтобы останавливать их вручную. С помощью следующей команды вы можете остановить все контейнеры, которые имеют отношения к конкретному развертыванию Podman Compose:
podman-compose down
В результате вы увидите, что Podman Compose остановил и удалил все развернутые контейнеры. Модуль, который содержал эти контейнеры, также был удален.
Отключение и удаление модулей
Помимо всего прочего, вы можете отключать и удалять модули, которые были созданы Podman Compose. Для того, чтобы отключить модуль, введите следующее:
podman pod stop [pod-name-or-id]
В результате вы увидите полный ID модуля, что говорит о том, что он был успешно удален.
Сервер Plex остановится и вернет вас к командной строке.
Удалить отключенные модули можно с помощью команды podman pod:
podman pod rm [pod-name-or-id]
Заключение
В этом руководстве мы продемонстрировали то, как можно использовать Podman Compose для развертывания приложения в вашей системе.
Здесь мы рассказали о трех способах, как установить Podman Compose, а также изложили инструкции по управлению контейнерами.