Перейти к основному содержимому
Quadlet и systemd

Quadlet и systemd

Quadlet — systemd-генератор Podman. Файлы с расширениями ниже преобразуются в .service-юниты и управляются через systemctl.

Типы файлов

.containerзапуск контейнера
.podсоздание пода
.volumeсоздание тома
.networkсоздание сети
.kubeзапуск ресурсов из Kubernetes YAML
.buildсборка образа
.imageзагрузка образа

Секции [Unit], [Service] и [Install] — стандартные для systemd. Параметры Podman задаются в [Container], [Pod], [Volume] и т. д.

Каталоги

rootful: /run/containers/systemd/, /etc/containers/systemd/, /usr/share/containers/systemd/

rootless: $XDG_RUNTIME_DIR/containers/systemd/, ~/.config/containers/systemd/, /etc/containers/systemd/users/, /etc/containers/systemd/users/$(UID)/

Примеры

Контейнер

/etc/containers/systemd/nginx.container:

[Unit]
Description=Nginx

[Container]
Image=docker.io/library/nginx
PublishPort=8080:80

[Service]
Restart=always

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start nginx.service

Под и контейнер в поде

/etc/containers/systemd/app.pod:

[Pod]
PodName=app
PublishPort=3000:3000

/etc/containers/systemd/app.container:

[Container]
Image=docker.io/gitea/gitea:latest
Pod=app.pod
Environment=GITEA__database__DB_TYPE=postgres
Environment=GITEA__database__HOST=localhost:5432
Environment=GITEA__database__NAME=gitea
Environment=GITEA__database__USER=gitea
Environment=GITEA__database__PASSWD=gitea

Том и контейнер

/etc/containers/systemd/data.volume:

[Volume]

/etc/containers/systemd/backend.container:

[Container]
Image=docker.io/library/postgres:15
Volume=data.volume:/var/lib/postgresql/data
Environment=POSTGRES_RANDOM_ROOT_PASSWORD=yes
Environment=POSTGRES_USER=gitea
Environment=POSTGRES_PASSWORD=gitea
Environment=POSTGRES_DATABASE=gitea

Kubernetes YAML

/etc/containers/systemd/deploy.kube:

[Unit]
Description=Приложение из Kubernetes YAML

[Kube]
Yaml=/opt/app/deployment.yml

[Install]
WantedBy=multi-user.target

Команды для запуска и проверки конфигурации

systemctl daemon-reloadперечитать конфигурацию systemd после изменения unit-файлов
systemctl start deployзапустить сервис deploy
systemctl status deployпосмотреть состояние сервиса deploy