img

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

Введение

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

icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту
C# разработчик с нуля
На курсе ты освоишь основы программирования на C#, включая синтаксис, объектно-ориентированное программирование и асинхронное программирование.
Укажите вашу электронную почту
Неверный адрес электронной почты
Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
Готово!
Отправили доступы на вашу
электронную почту

Из этой стать вы узнаете, что такое 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, а также изложили инструкции по управлению контейнерами. 

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
icon strelka icons icons

узнай больше на курсе

Python программист с нуля
Стань разработчиком на одном из самых популярных языков программирования - Python
Подробнее о курсе
Java-разработчик с нуля
Освойте backend-разработку и программирование на Java, фреймворки Spring и Maven, работу с базами данных и API
Подробнее о курсе
C# разработчик с нуля
На курсе ты освоишь основы программирования на C#, включая синтаксис, объектно-ориентированное программирование и асинхронное программирование.
Подробнее о курсе
Фронтенд-разработчик с нуля
Погрузитесь в мир веб-разработки, освоив основные инструменты работы: HTML, CSS, JavaScript
Подробнее о курсе
Разработка приложений на Flutter и Dart
Научись создавать кроссплатформенные приложения на Flutter, освой язык Dart
Подробнее о курсе
Автоматизированное тестирование на Python
Изучите автоматизацию тестирования на Python чтобы стать востребованным специалистом
Подробнее о курсе
Еще по теме:
img
SQL или NoSQL, вот в чём вопрос! И как раз с этим вопросом мы поможем сегодня разобраться. Что использовать в каких случаях, где есть какие преимущества и как возможно использовать их все вместе.
img
Вебхуки позволяют различным системам обмениваться данными в реальном времени. В этой статье мы разберём, что такое вебхук, как он работает, где и зачем его использовать, а также как настроить.
img
Redis — один из самых популярных инструментов для хранения данных. В статье разбираем, что такое Redis и как его можно использовать.
img
Маска подсети помогает определить, какие устройства находятся в одной сети, а какие – за её пределами. В этой статье разберём, что такое маска подсети, зачем она нужна и как её использовать.
Весенние скидки
30%
50%
60%
До конца акции: 30 дней 24 : 59 : 59