Как пользоваться Distrobox: подробное руководство
Быстрые ссылки
- Программное обеспечение, на котором построен Distrobox
- Как работает Distrobox
- Почему я рекомендую Podman вместо Docker
- Как установить Podman
- Как установить Distrobox
- Создание первого контейнера Distrobox
- Как установить приложение в контейнер Distrobox
- Как запустить приложение в контейнере Distrobox
- Как мыслить о контейнерах Distrobox
- Другие полезные команды Distrobox
- Как удалить Distrobox
Как часто вы натыкаетесь на хорошую программу, которая недоступна в вашем дистрибутиве? Часто следующий шаг — попытка установить через Brew, Flatpak или Snap, но результат может не удовлетворять.
Фрагментированная экосистема упаковки в Linux — реальная проблема. Одни дистрибутивы используют похожие, но несовместимые форматы пакетов; другие — совсем иные системы. Flatpak и Snap пытались решить задачу, но просто добавили новые стандарты. Вместо того чтобы плодить стандарты, полезнее комбинировать существующие — здесь и приходит на помощь Distrobox.
Программное обеспечение, на котором построен Distrobox
Прежде чем перейти к самому Distrobox, полезно понять ПО, на котором он опирается: Docker и Podman. Docker — это runtime для контейнеров, который изолирует процессы в отдельных контейнерах; такие процессы, как правило, не взаимодействуют с системой за пределами контейнера. Контейнеры строятся на базовых механизмах Linux, таких как namespaces и control groups. Не обязательно вдаваться в детали — достаточно помнить, что контейнер изолирует процессы.
Podman — это другой runtime для контейнеров, который внешне похож на Docker, но ключевое отличие в том, что Podman по умолчанию не запускает контейнеры от root. Это важно — вы увидите почему далее. Docker и Podman очень похожи, и многие инструкции для Docker работают и с Podman.
Как работает Distrobox

Список контейнеров Distrobox.
Distrobox размывает границы между дистрибутивами и использует существующие инструменты для установки кросс-дистрибутивных пакетов. Он оборачивает выбранный runtime контейнеров (Podman, Docker или Lilypod) и запускает процессы внутри контейнера. При выполнении команды Distrobox она делегирует задачу базовому runtime.
Зачем это нужно? В отличие от чистых контейнерных сценариев, Distrobox плотно интегрирует процессы контейнера с хост-системой: контейнерный процесс может читать ваш домашний каталог, видеть процессы хоста и взаимодействовать с ними. Distrobox автоматически настраивает сложные параметры контейнера, чтобы приложения из контейнера работали с рабочим окружением на хосте так же, как если бы они были установлены локально.
Цель runtime — изоляция процессов; цель Distrobox — плотная интеграция с минимальной конфигурацией.
Официальная документация описывает эту «плотную интеграцию» технически:
…seamlessly integrates with the rest of the operating system by providing access to the user’s home directory, the Wayland and X11 sockets, networking, removable devices (like USB sticks), systemd journal, SSH agent, D-Bus, ulimits, /dev and the udev database, etc…
Почему я рекомендую Podman вместо Docker
Используйте Podman в качестве runtime, потому что по умолчанию он запускает контейнеры от непривилегированного пользователя (rootless), тогда как Docker обычно работает как root. Это важно: процессы внутри контейнера наследуют привилегии контейнера. Если контейнер запущен как root, любой баг или уязвимость в интеграции может привести к доступу к ресурсам хоста.
Distrobox может предложить установить пароль для контейнера, если он запускается как root, что даёт некоторую защиту, но это не полноценное решение. По возможности держите контейнеры в rootless режиме.
Как установить Podman
Podman доступен для десятков дистрибутивов. Команды ниже покрывают самые распространённые случаи.
Для Debian и производных (Ubuntu, Mint и др.):
sudo apt-get install podmanДля производных Red Hat (Fedora и др.):
sudo dnf install podmanДля Arch Linux и производных:
sudo pacman -S podmanСкорее всего, Podman есть в стандартных репозиториях дистрибутива. Главное — настроить режим rootless. Для некоторых систем требуется ручная настройка; следуйте документации вашего дистрибутива.
Как установить Distrobox
Distrobox доступен более чем для 30 дистрибутивов. После установки Podman (или Docker) установите Distrobox через менеджер пакетов вашего дистрибутива.
Для Debian и производных:
sudo apt-get install distroboxДля Fedora и производных:
sudo dnf install distroboxДля Arch Linux и производных:
sudo pacman -S distroboxЕсли Distrobox отсутствует в репозитории, можно использовать установочный скрипт:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo shВНИМАНИЕ: команды вида curl … | sh могут содержать вредоносный код. Всегда проверяйте источник и просматривайте скрипт перед запуском.
После установки укажите Podman как контейнерный менеджер в конфигурационном файле Distrobox. Эта команда перезапишет ~/.distroboxrc, если он уже есть:
echo 'container_manager="podman"' > ~/.distroboxrcТеперь всё готово.
Создание первого контейнера Distrobox
Контейнеры хранят ваши изменения в слое поверх образа. Образы предоставляют базовую систему дистрибутива. Установленные пакеты живут внутри контейнера. Distrobox интегрирует домашнюю папку контейнера с вашей домашней папкой на хосте, поэтому конфигурационные файлы пакетов будут находиться в вашем домашнем каталоге.
Создать контейнер из образа по умолчанию:
distrobox create -n my-containerСоздадим контейнер на базе Arch Linux:
distrobox create --name my-arch --image archlinux:latest
Можно создать контейнер из любого образа:
distrobox create --name my-debian --image debian:latestdistrobox create --name my-fedora --image fedora:latestНе прерывайте процесс создания контейнера. При прерывании он может повредиться и потребовать пересоздания.
Distrobox поддерживает более 30 дистрибутивов и совместим с образами Toolbox. Поддерживаемые имена образов перечислены в документации Distrobox.
Как установить приложение в контейнер Distrobox
Контейнер — это окружение, которое вы активируете. Все последующие команды выполняются внутри контейнера.
distrobox enter my-archПопробуйте систему. Завершите сессию командой exit.

Часто удобнее выполнять одиночные команды без интерактивного входа. Пример установки Firefox в Arch:
distrobox enter my-arch -- sudo pacman -S firefox
Если контейнер основан на другом дистрибутиве, используйте соответствующий менеджер пакетов.
Для Debian и производных:
distrobox enter my-container-name -- sudo apt-get install firefoxДля Fedora и производных:
distrobox enter my-container-name -- sudo dnf install firefoxЕсли команды установки вызывают затруднения, сначала освоьте базовые команды управления пакетами вашего дистрибутива.
При использовании Podman sudo «просто работает»: rootless Podman запускает контейнеры как непривилегированный пользователь, и процессы внутри контейнера не получают привилегий выше, чем сам контейнер.
Как запустить приложение в контейнере Distrobox
Чтобы запустить установленный Firefox:
distrobox enter my-arch -- firefox
Команда блокирует терминал до завершения приложения. Удобнее создать alias в файле конфигурации оболочки:
alias firefox="distrobox enter my-arch -- nohup firefox >/dev/null 2>&1 &"Можно дать alias любое имя.
Одна из сильных сторон Distrobox — графические приложения работают без дополнительной конфигурации. Поддерживается X11 и Wayland. Distrobox также поддерживает GPU-ускорение; для этого обратитесь к документации.
Как мыслить о контейнерах Distrobox
Контейнер — это слой поверх образа. Distrobox может использовать один образ для нескольких контейнеров. Пример:
distrobox create --name deb-1 --image debian:latestЕсли затем создать ещё два контейнера на том же образе:
distrobox create --name deb-2 --image debian:latestdistrobox create --name deb-3 --image debian:latestВсе три используют один и тот же неизменяемый образ Debian. Однако каждый контейнер — отдельный слой. Пакет, установленный в deb-1, не появится в deb-2 или deb-3. Зато конфигурация, расположенная в вашем домашнем каталоге, будет общей.
Стратегия: обычно создавайте по одному контейнеру на дистрибутив. Например, если нужен пакет из AUR, заведите Arch-контейнер; если несколько нужных пакетов есть в Debian, держите их в одном Debian-контейнере. Но при конфликте версий стоит создавать отдельные контейнеры.
Другие полезные команды Distrobox
Самый простой способ — читать справку:
distrobox --helpПомощь по конкретной команде:
distrobox create --helpВременные контейнеры
Для быстрых тестов используйте временные контейнеры. Distrobox автоматически удалит их после завершения:
distrobox ephemeralОни медленнее стартуют, потому что инициализируют окружение, как новый контейнер.
См. distrobox ephemeral –help для опций.
Управление контейнерами
Список контейнеров:
distrobox lsОстановка и удаление контейнера:
distrobox stop my-container
distrobox rm my-containerОбычно не обязательно останавливать контейнер перед удалением — Distrobox предложит принудительное удаление, если контейнер запущен.
Обновление всех контейнеров:
distrobox upgrade --allОбновление конкретного контейнера:
distrobox upgrade my-containerКоманда upgrade использует менеджер пакетов внутри контейнера для обновления пакетов. Контейнеры требуют регулярного обслуживания.
Удаление пакета (на примере Arch):
distrobox enter my-arch -- sudo pacman -R firefoxДля Fedora:
distrobox enter my-container-name -- sudo dnf rm firefoxДля Debian:
distrobox enter my-container-name -- sudo apt-get remove firefoxКак удалить Distrobox
Если вы установили Distrobox через curl, используйте официальный скрипт удаления:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/uninstall | sudo shВ противном случае используйте менеджер пакетов вашего дистрибутива.
Для Debian и производных:
sudo apt-get remove distroboxДля Fedora и производных:
sudo dnf rm distroboxДля Arch Linux:
sudo pacman -R distroboxВ мире Docker плотная интеграция иногда считается слабостью — Docker склонен к изоляции. Distrobox же делает ставку на интеграцию. Разница также в том, запускается ли контейнер как root. Я рекомендую Podman именно из-за его rootless модели. Поддерживайте осторожность при запуске rootful контейнеров: запуск приложений внутри контейнера под непривилегированным пользователем не всегда защищает от эскалации привилегий.
Важное
- Никогда не запускать непроверенные образы как rootful. Это риск для безопасности.
- Проверяйте содержимое скриптов, загружаемых через curl | sh.
- Храните конфиденциальные данные (ключи, токены) отдельно; контейнеры имеют доступ к домашнему каталогу.
Альтернативные подходы и когда они лучше
- Flatpak и Snap удобны для доставки GUI-приложений с безопасной песочницей. Хороши для конечного пользователя, когда пакет поддерживается.
- chroot и systemd-nspawn подходят для изоляции и тестирования системных пакетов, но требуют больше администрирования.
- Виртуальные машины (VirtualBox, KVM) дают полную изоляцию и подходят для тестирования целых систем, но медленнее и требуют больше ресурсов.
Когда Distrobox не подойдёт:
- Нужна полная изоляция и защита от полного компрометации хоста — используйте ВМ.
- Вам требуется централизованное развёртывание на сервере — лучше подойдёт контейнерная оркестрация (Kubernetes).
Ментальные модели и эвристики
- «Контейнер = слой над образом»: думайте о контейнере как о тонком изменяемом слое над неизменяемой базой.
- «Один дистрибутив — один контейнер» обычно проще для управления.
- «Rootless по умолчанию»: меньше привилегий — меньше риска.
Дерево решений (Mermaid)
flowchart TD
A{Нужна графика?} -->|Да| B{Поддерживает пакет ваш дистрибутив?}
A -->|Нет| C[Используйте CLI в контейнере]
B -->|Да| D[Установите локально или Flatpak]
B -->|Нет| E[Используйте Distrobox с Podman]
E --> F{Требуется полная изоляция?}
F -->|Да| G[Используйте VM]
F -->|Нет| H[Используйте rootless Distrobox]Ролевые чек-листы
Разработчик:
- Установить Podman и Distrobox.
- Создать контейнер под нужный дистрибутив.
- Настроить alias для быстрого запуска тестов.
- Версионировать конфигурации в dotfiles.
Системный администратор:
- Настроить rootless Podman для пользователей.
- Регулярно обновлять образы и контейнеры.
- Контролировать доступ к домашним каталогам.
Обычный пользователь рабочего стола:
- Установить Distrobox через пакетный менеджер.
- Создать один контейнер для нужного дистрибутива.
- Использовать GUI-приложения из контейнера через alias.
Пошаговый SOP: Установка GUI-приложения в Distrobox
- Установите Podman и Distrobox.
- Убедитесь, что ~/.distroboxrc содержит container_manager=”podman”.
- Создайте контейнер (пример Arch):
distrobox create --name my-arch --image archlinux:latest- Установите пакет без входа в интерактивный режим:
distrobox enter my-arch -- sudo pacman -S - Создайте alias для быстрого запуска:
alias appname="distrobox enter my-arch -- nohup appname >/dev/null 2>&1 &"Проверяйте обновления: distrobox upgrade my-arch.
Если что-то пошло не так, см. Incident runbook.
Runbook при инциденте и откат
Сценарий: приложение перестало запускаться после обновления.
- Проверьте журналы контейнера:
distrobox enter my-arch -- journalctl -xe- Попробуйте запустить контейнер в интерактивном режиме и воспроизвести ошибку:
distrobox enter my-arch- Откат пакета внутри контейнера (если доступно):
distrobox enter my-arch -- sudo pacman -U /var/cache/pacman/pkg/.pkg.tar.zst Если проблема критична — создайте новый контейнер из чистого образа и переустановите приложение.
Удалите повреждённый контейнер:
distrobox rm my-arch- Восстановите данные из домашней папки на хосте (если применимо).
Шпаргалка команд и сниппеты
- Создать контейнер: distrobox create –name name –image image:tag
- Войти: distrobox enter name
- Одноразовая команда: distrobox enter name – command
- Список: distrobox ls
- Удалить: distrobox rm name
- Обновить: distrobox upgrade name
- Временный: distrobox ephemeral
Alias для systemd-based десктопа (пример):
alias vscode="distrobox enter my-debian -- nohup code >/dev/null 2>&1 &"Сравнительная матрица: Podman vs Docker vs Lilypod
- Podman: rootless по умолчанию, CLI совместим с Docker, хорош для рабочего стола.
- Docker: широко распространён, требует daemon и часто root-привилегий, удобен для серверных сценариев.
- Lilypod: менее распространённый runtime; совместимость и экосистема меньше.
Безопасность и жёсткая конфигурация
- Используйте rootless Podman.
- Отказывайтесь от монтирования / (root) в контейнер.
- Ограничьте доступ к критичным файлам через точечные bind mounts.
- Подписывайте и проверяйте образы при возможности.
- Ограничьте ulimits и ресурсы контейнера через параметры runtime.
Конфиденциальность и заметки по GDPR
Distrobox интегрирует домашний каталог хоста. Любые персональные данные и токены, хранящиеся в домашней папке, будут доступны контейнеру. Для хранения чувствительных данных используйте менеджеры секретов или отдельные, зашифрованные хранилища.
Совместимость и подсказки по миграции
- При переносе между машинами экспортируйте только необходимые конфигурации и бэкапьте данные из домашней папки.
- Для воспроизводимости указывайте точный тег образа (например, debian:11), а не :latest.
Факт-бокс
- Distrobox поддерживает более 30 дистрибутивов.
- Podman доступен как минимум для десятка популярных дистрибутивов.
- Distrobox использует существующие контейнерные образы — это экономит место и время.
Короткая анонс-версия (100–200 слов)
Distrobox позволяет запускать приложения из других дистрибутивов прямо в вашей системе без тяжёлой виртуализации. Он оборачивает контейнерный runtime (рекомендуется Podman в режиме rootless) и автоматически настраивает интеграцию: доступ к домашней папке, X11/Wayland, SSH-агенту и другим ресурсам. Это означает, что вы можете установить GUI-приложение из Arch или Fedora и запустить его на Ubuntu, не ломая систему. Distrobox особенно полезен, когда нужного пакета нет в вашем репозитории, но доступен в другом дистрибутиве.
Однострочный глоссарий
- Контейнер: изменяемый слой поверх образа; запускает процессы.
- Образ: неизменяемая база системы для контейнера.
- Rootless: запуск без привилегий root.
- Runtime: программа, управляющая контейнерами (Podman/Docker).
Резюме
- Distrobox хорош для запуска приложений из других дистрибутивов с минимальной конфигурацией.
- Выбирайте Podman в rootless режиме для лучшей безопасности.
- Создавайте по одному контейнеру на дистрибутив и изолируйте конфликты версий в отдельных контейнерах.
Важно: будьте осторожны с rootful контейнерами и всегда проверяйте скрипты, запускаемые через сеть.
Похожие материалы
Как выбрать NVMe SSD для PS5
Как очистить и перезапустить Print Spooler в Windows
Как выбрать недорогой Smart TV
Доступ к Twitter через Tor: простая инструкция
Google вход в Next.js через NextAuth