Подробный гайд: Podman в ALT Linux: полное руководство по установке и настройке контейнеров

Podman в ALT Linux: установка, настройка rootless, работа с образами, systemd-интеграция, безопасность и решение типовых проблем.

2026.04.25                  


Подробный гайд: Podman в ALT Linux: полное руководство по установке и настройке контейнеровПодробный гайд: Podman в ALT Linux: полное руководство по установке и настройке контейнеров Ниже представлен подробный практический гайд по установке, настройке и эксплуатации Podman в ALT Linux (ветки p10, p11 и Sisyphus) без декоративных элементов. Руководство ориентировано на современные реалии (2024–2026 гг.), где Podman по умолчанию работает в rootless-режиме и использует cgroups v2.


1. Подготовка системы

Перед установкой убедитесь, что система обновлена и поддерживает необходимые ядерные функции:

sudo apt-get update
sudo apt-get dist-upgrade -y

Проверка поддержки cgroups v2 (обязательно для rootless Podman):

stat -fc %T /sys/fs/cgroup/
# Должно вернуть: cgroup2fs

Если возвращается tmpfs или ошибка, убедитесь, что в загрузчике не указан параметр systemd.unified_cgroup_hierarchy=0. В современных сборках ALT Linux cgroups v2 включено по умолчанию.


2. Установка Podman

sudo apt-get install podman podman-docker slirp4netns fuse-overlayfs crun uidmap shadow-utils

Пояснение пакетов:

Пакет Назначение
podman Основной бинарник
podman-docker Совместимые алиасы docker → podman
slirp4netns Виртуальная сеть для rootless-контейнеров
fuse-overlayfs Драйвер хранилища без прав root
crun Современная легковесная среда выполнения (runtime)
uidmap / shadow-utils newuidmap/newgidmap для изоляции пользователей

Проверка установки:

podman --version
podman info | grep -E "graphDriverName|cgroupVersion|runRoot"

3. Настройка rootless-режима (рекомендуется)

Rootless Podman позволяет запускать контейнеры без sudo, что безопаснее и соответствует современным стандартам.

3.1. Настройка subuid / subgid

Проверьте, есть ли диапазоны для вашего пользователя:

grep "^$(whoami):" /etc/subuid /etc/subgid

Если вывод пуст, добавьте вручную (замените denis на ваш логин):

sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $(whoami)

Диапазон должен содержать минимум 65536 UID/GID. Избегайте пересечений с другими пользователями.

3.2. Конфигурация хранилища

Создайте файл ~/.config/containers/storage.conf:

mkdir -p ~/.config/containers
cat > ~/.config/containers/storage.conf <<EOF
[storage]
driver = "overlay"
graphroot = "$HOME/.local/share/containers/storage"
runroot = "$XDG_RUNTIME_DIR/containers"

[storage.options.overlay]
mount_program = "/usr/bin/fuse-overlayfs"
EOF

Проверьте применение:

podman info | grep -A2 "graphDriverName"

4. Реестры образов

По умолчанию Podman использует docker.io, quay.io и registry.fedoraproject.org.

Для корпоративных сред или локальных зеркал отредактируйте /etc/containers/registries.conf (требуются права root):

sudo cp /usr/share/containers/registries.conf /etc/containers/registries.conf
sudo nano /etc/containers/registries.conf

Пример секции для добавления зеркала:

[[registry]]
prefix = "docker.io"
location = "mirror.example.com/library"
insecure = false
blocked = false

Для тестовых сред можно разрешить http (не рекомендуется для продакшена):

insecure_registries = ["registry.local:5000"]

5. Базовое использование

Задача Команда
Запуск контейнера podman run -d --name web -p 8080:80 nginx:alpine
Список процессов podman ps / podman ps -a
Логи podman logs -f web
Вход в контейнер podman exec -it web /bin/sh
Остановка/удаление podman stop web && podman rm web
Сборка образа podman build -t myapp:latest -f Dockerfile .
Экспорт/Импорт podman save -o myapp.tar myapp:latest / podman load -i myapp.tar
Совместимость с Docker docker run ... (если установлен podman-docker)

Для работы docker-compose с Podman установите podman-compose или используйте переменную окружения:

export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock

6. Интеграция с systemd

Podman умеет генерировать нативные systemd-юниты для контейнеров.

6.1. Генерация файла службы

podman generate systemd --new --name web --files
# Создаст ./container-web.service

6.2. Установка и активация

Вариант A: Пользовательская служба (без sudo)

mkdir -p ~/.config/systemd/user
mv container-web.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now container-web.service
loginctl enable-linger $(whoami)  # Чтобы служба работала после выхода из сессии

Вариант B: Системная служба (требует sudo)

sudo mv container-web.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now container-web.service

Проверка статуса:

systemctl --user status container-web.service
journalctl --user -u container-web.service -f

7. Устранение типичных проблем

Симптом Решение
newuidmap failed: No subuid ranges Проверьте /etc/subuid и /etc/subgid. Добавьте диапазоны через usermod.
overlay: not supported Установите fuse-overlayfs. Убедитесь, что в storage.conf указан mount_program.
Контейнер не видит сеть Убедитесь, что установлен slirp4netns или pasta (Podman 5+). Пересоздайте сеть: podman network create mynet
permission denied при запуске от пользователя Проверьте права на $XDG_RUNTIME_DIR. Выполните loginctl enable-linger $USER.
Образы тянутся медленно Настройте зеркало в registries.conf. Используйте podman pull --platform linux/amd64 если архитектура не определяется.
Полный сброс состояния podman system reset (удаляет все контейнеры, образы, сети. Используйте осторожно!)

Логи пользовательских служб: journalctl --user -u 'container-*' -f


8. Лучшие практики и безопасность

  1. Всегда используйте rootless, если нет явной необходимости в привилегированном доступе.
  2. Ограничивайте ресурсы: --memory=512m --cpus=1.0
  3. Храните данные в томах: podman volume create appdata → -v appdata:/data
4. Обновляйте контейнеры автоматически:
   podman auto-update --dry-run  # Проверка
   podman auto-update            # Применение

(Требует метки io.containers.autoupdate=registry при создании контейнера)

5. Используйте podman unshare для операций, требующих изменения файловой системы вне контейнера:
   podman unshare chown -R 1000:1000 /path/to/volume
6. AppArmor в ALT Linux:
  • По умолчанию политики могут блокировать некоторые действия. При ошибках permission denied проверьте статус: aa-status. При необходимости создайте локальный профиль или временно переведите в complain-режим.