Вступ¶
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, який може генерувати файли модулів rootless та rootful 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/
Хоча окремі контейнери, модулі, зображення, мережі, томи та файли 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
Оскільки згенеровані службові файли вважаються тимчасовими, їх не можна ввімкнути за допомогою systemd. Щоб пом’якшити це, генератор вручну застосовує встановлення під час створення. Це фактично також активує ці файли служб.
Підтримуються інші типи файлів: 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