Контейнеры в ALT Linux: Docker — /var/lib/docker, Podman — /var/lib/containers, LXC — /var/lib/lxc. Пути настраиваются в конфигах.
2026.04.20
#AltLinux
#Docker
#Podman
#LXC
#контейнеры
#Linux
#системное администрирование
#виртуализация
Подробный гайд: расположение контейнеров в ALT Linux
В ALT Linux расположение контейнеров не является фиксированным и полностью зависит от используемой технологии контейнеризации. Дистрибутив следует стандартной иерархии FHS, поэтому пути совпадают с общепринятыми в экосистеме Linux. Ниже приведён подробный гайд по всем основным runtime, способам проверки, изменения путей и особенностям ALT Linux.
1. Как определить, какая технология контейнеров используется
# Проверить установленные пакеты
rpm -qa | grep -E 'docker|podman|lxc|systemd-container'
# Посмотреть активные сервисы
systemctl list-units --type=service | grep -E 'docker|podman|lxc|machines'
# Узнать, где хранятся образы/контейнеры (универсально)
find /var/lib -maxdepth 3 -name 'containers' -o -name 'docker' -o -name 'machines' 2>/dev/null
2. Docker
| Параметр |
Значение |
| Стандартный путь |
/var/lib/docker/ |
| Образы |
/var/lib/docker/image/ |
| Слои FS |
/var/lib/docker/overlay2/ (или btrfs, zfs) |
| Контейнеры |
/var/lib/docker/containers/ |
| Тома |
/var/lib/docker/volumes/ |
| Конфиг демона |
/etc/docker/daemon.json |
Проверка текущего пути
docker info | grep "Docker Root Dir"
# или
docker info --format '{{.DockerRootDir}}'
Изменение пути
- Остановите Docker:
sudo systemctl stop docker
- Отредактируйте
/etc/docker/daemon.json:
{
"data-root": "/mnt/data/docker"
}
3. Перенесите данные:
sudo rsync -aXSH /var/lib/docker/ /mnt/data/docker/
sudo mv /var/lib/docker /var/lib/docker.old # для отката
- Запустите:
sudo systemctl start docker
- Убедитесь:
docker info | grep Root
Важно:
- Не удаляйте /var/lib/docker/ вручную. Docker управляет метаданными в SQLite/BoltDB.
3. Podman (рекомендуется в современных дистрибутивах)
| Режим |
Путь |
| Root (sudo) |
/var/lib/containers/storage/ |
| Rootless (пользователь) |
~/.local/share/containers/storage/ |
| Конфиг (системный) |
/etc/containers/storage.conf |
| Конфиг (пользовательский) |
~/.config/containers/storage.conf |
Проверка
podman info | grep -A2 "graphRoot\|runRoot"
# или
podman system info --format '{{.Store.GraphRoot}}'
Изменение пути
В /etc/containers/storage.conf (или пользовательском):
[storage]
driver = "overlay"
graphroot = "/mnt/data/podman"
runroot = "/run/podman"
Перенос аналогичен Docker, но для rootless убедитесь, что у пользователя есть права на новый каталог.
Особенность rootless:
- используется fuse-overlayfs. Убедитесь, что установлен пакет fuse-overlayfs.
4. LXC / LXD
| Параметр |
Значение |
| Стандартный путь |
/var/lib/lxc/ |
| Конфиг контейнера |
/var/lib/lxc/<имя>/config |
| Корневая ФС |
/var/lib/lxc/<имя>/rootfs/ |
| Системный конфиг |
/etc/lxc/default.conf |
Проверка
lxc-ls --fancy
# или
grep lxcpath /etc/lxc/lxc.conf
Изменение пути
В /etc/lxc/lxc.conf:
lxcpath = /mnt/data/lxc
Или передавайте параметр -P/--lxcpath при запуске команд. LXC не переносит данные автоматически: скопируйте /var/lib/lxc/ вручную и обновите lxcpath.
5. systemd-nspawn
| Параметр |
Значение |
| Стандартный путь |
/var/lib/machines/ |
| Контейнер |
Папка с полной rootfs: /var/lib/machines/<имя>/ |
| Конфиг |
/etc/systemd/nspawn/<имя>.nspawn |
Проверка
machinectl list
systemd-nspawn --list
Изменение пути
Редко требуется. Можно изменить через параметр MachineDirectory= в systemd-nspawn@.service или монтировать другой каталог в /var/lib/machines/.
6. Как безопасно перенести хранилище контейнеров (универсальный алгоритм)
1. Остановите сервис:
`sudo systemctl stop docker` (или podman, lxc)
2. Синхронизируйте данные:
sudo rsync -aHAXx --info=progress2 /старый/путь/ /новый/путь/
- Обновите конфигурацию (см. разделы выше)
4. Обновите права/контексты:
sudo chown -R root:root /новый/путь # для root-режима
sudo restorecon -Rv /новый/путь # если включён SELinux/AppArmor
- Запустите сервис и проверьте работоспособность
- Удалите старую папку только после успешного теста
7. Особенности ALT Linux
| Аспект |
Примечание |
| Рекомендуемый runtime |
podman (поставляется в базовых репозиториях, поддерживает rootless из коробки) |
| Пакеты |
podman, docker (или docker-engine), lxc, systemd-container |
| Менеджер пакетов |
apt-rpm (команды apt-get install, urpmi не используются) |
| Мандатный контроль |
По умолчанию может быть активен AppArmor. При переносе путей проверьте журналы: journalctl -u docker/podman -f |
| Файловые системы |
ALT поддерживает btrfs и zfs для нативного снапшотинга контейнеров. Указывайте driver = "btrfs" в конфигах при необходимости |
| Системные юниты |
Все сервисы управляются через systemd. Переопределение путей через systemctl edit безопасно |
8. Резервное копирование и миграция
| Технология |
Экспорт контейнера |
Экспорт образа |
| Docker |
docker export > container.tar |
docker save > image.tar |
| Podman |
podman export > container.tar |
podman save > image.tar |
| LXC |
lxc-copy -n <имя> -N <новый> -s или архив /var/lib/lxc/<имя>/ |
lxc image export (через LXD) |
| nspawn |
tar -C /var/lib/machines/<имя> -cf backup.tar . |
— |
Рекомендация:
- Не бэкапьте каталоги /var/lib/docker/ или /var/lib/containers/ простым tar. Используйте штатные утилиты экспорта, иначе при восстановлении могут нарушиться метаданные, хеши слоёв и ссылки.
Чек-лист перед изменением путей
- [ ] Остановлен соответствующий сервис
- [ ] Создана точка монтирования/раздел с нужной ФС
- [ ] Используется rsync -aHAXx для сохранения атрибутов
- [ ] Конфиг изменён и валидирован
- [ ] Сервис запущен, контейнеры проверены (docker ps, podman ps, machinectl list)
- [ ] Старый каталог переименован (не удалён) на 24–48 часов для отката