Вступ¶
Podman — це альтернативне середовище виконання контейнерів, сумісне з Docker, яке, на відміну від Docker, включено до репозиторіїв Rocky Linux і може запускати контейнери як службу systemd.
Встановлення Podman¶
Використовуйте утиліту dnf
для встановлення Podman:
dnf install podman
Додавання контейнера¶
Запустимо для прикладу автономну хмарну платформу Nextcloud:
podman run -d -p 8080:80 nextcloud
Ви отримаєте підказку вибрати реєстр контейнерів для завантаження. У нашому прикладі ми будемо використовувати docker.io/library/nextcloud:latest
Щойно ви завантажите контейнер Nextcloud, він запуститься.
Введіть ip_address:8080 у своєму веб-браузері (за умови, що ви відкрили порт у firewalld
) і налаштуйте Nextcloud:
Запуск контейнерів як служб systemd¶
Використання quadlet
¶
Починаючи з версії 4.4 Podman постачається з Quadlet – генератором systemd. Його можна використовувати для генерації файлів модулів для безкорінних і кореневих системних служб.
Можна розміщувати файли квадлетів для кореневих служб в
/etc/containers/systemd/
/usr/share/containers/systemd/
тоді як безкореневі файли можна розмістити в будь-якому з
$XDG_CONFIG_HOME/containers/systemd/
або~/.config/containers/systemd/
/etc/containers/systemd/users/$(UID)
/etc/containers/systemd/users/
Хоча файли окремих контейнерів, pod, image, network, volume і kube також підтримуються, давайте зосередимося на нашому прикладі Nextcloud. Створіть новий файл ~/.config/containers/systemd/nextcloud.cotainer із таким вмістом:
[Container]
Image=nextcloud
PublishPort=8080:80
Доступно багато інших варіантів.
Щоб запустити генератор і повідомити systemd про запуск нової служби:
systemctl --user daemon-reload
Щоб запустити службу, виконайте такі дії:
systemctl --user start nextcloud.service
Примітка
Якщо ви створили файл в одному з каталогів для кореневих служб, опустіть позначку `--user`.
Щоб автоматично запускати контейнер після запуску системи або входу користувача, ви можете додати ще один розділ до свого файлу nextcloud.container
:
[Install]
WantedBy=default.target
Потім знову запустіть генератор і ввімкніть службу:
systemctl --user daemon-reload;
systemctl --user enable nextcloud.service;
Підтримуються інші типи файлів: pod, том, мережа, зображення та kube. Pods, наприклад, можна використовувати для групування контейнерів – згенерованого systemd служби та їхні залежності (створити pod перед контейнерами) автоматично керуються systemd.
Використання podman generate systemd
¶
Podman додатково надає підкоманду generate systemd
. Його можна використовувати для створення службових файлів systemd
.
Важливо
`generate systemd` не підтримується і не матиме подальших функцій. Рекомендовано використовувати Quadlet.
Давайте тепер зробимо це за допомогою Nextcloud. Запустіть:
podman ps
Ви отримаєте список запущених контейнерів:
04f7553f431a docker.io/library/nextcloud:latest apache2-foregroun... 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp compassionate_meninsky
Як видно вище, ім’я нашого контейнера – compassionate_meninsky
.
Щоб створити контейнер systemd
і ввімкнути його під час перезавантаження, виконайте наступне:
podman generate systemd --name compassionate_meninsky > /usr/lib/systemd/system/nextcloud.service
systemctl enable nextcloud
Замініть compassionate_meninsky
на назву вашого контейнера.
Коли ваша система перезавантажиться, Nextcloud перезапуститься в Podman.
Author: Neel Chauhan
Contributors: Steven Spencer, Ganna Zhyrnova, Christian Steinert