Skip to content

Секреты, тома и сети ​

Стекам часто нужны данные, которые живут дольше контейнеров и не хранятся в compose.yml: пароли, базы данных, отдельные сети. Для этого используется группа команд infra — она управляет ресурсами Podman: секретами, томами и сетями.

Секреты ​

Podman secrets позволяют безопасно передавать чувствительные данные (пароли, токены, ключи) в контейнеры — без прописывания их в compose.yml.

Секрет создаётся из данных на stdin:

bash
echo "super-secret-password" | ssh server infra secret create db_password

Чтобы стек использовал секрет, укажите external: true в compose.yml:

yaml
secrets:
  db_password:
    external: true

Значение секрета появится в контейнере по пути /run/secrets/db_password.

Тома ​

Тома хранят данные, которые должны пережить пересоздание контейнеров и стеков: базы данных, файлы приложений. Обычные named volumes из compose.yml тоже работают; через infra дополнительно можно экспортировать и импортировать данные тома — например, для резервного копирования:

bash
ssh server infra volume export db_data > db_data.tar.zst   # бэкап
ssh server infra volume import db_data < db_data.tar.zst   # восстановление

Неиспользуемые тома удаляются командой infra volume prune — она полезна после stack remove, который не трогает данные.

Сети ​

По умолчанию каждый стек получает собственную сеть. Если нужно объединить контейнеры разных стеков или изолировать их от внешнего доступа, создайте сеть явно:

bash
ssh server infra network create mynet --subnet 10.0.0.0/24 --gateway 10.0.0.1

И подключите её к стеку через external: true:

yaml
services:
  app:
    networks:
      - mynet

networks:
  mynet:
    external: true

Поддерживаются драйверы bridge, macvlan и ipvlan, а также IPv6 и внутренние (без выхода наружу) сети.

Дальше ​

Полный список команд с синтаксисом и примерами — в справочнике команд infra.