Перейти к основному содержимому
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

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

app.pod:

[Pod]
PodName=app
PublishPort=3000:3000

app.container:

[Container]
Image=docker.io/gitea/gitea:latest
Pod=app.pod

Том, сеть и контейнер

data.volume:

[Volume]

backend.network:

[Network]
Subnet=10.89.0.0/24

backend.container:

[Container]
Image=docker.io/library/postgres:15
Volume=data.volume:/var/lib/postgresql/data
Network=backend.network

Kubernetes YAML

deploy.kube:

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

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

[Install]
WantedBy=multi-user.target

Команды podman quadlet

Установка и управление Quadlet-файлами текущего пользователя (rootless):

podman quadlet install <файл|каталог|URL>
podman quadlet list
podman quadlet print <имя>
podman quadlet rm <имя>

Файлы устанавливаются в ~/.config/containers/systemd/.

Руководства на man-страницах

Quadletman podman-quadlet
Синтаксис unit-файловman podman-systemd.unit
podman quadlet installman podman-quadlet-install
podman quadlet listman podman-quadlet-list
podman quadlet printman podman-quadlet-print
podman quadlet rmman podman-quadlet-rm