Гид по технологиям

Как пользоваться Distrobox: подробное руководство

10 min read Linux Обновлено 26 Dec 2025
Distrobox: полный гид по использованию
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

Окно терминала Linux со списком трёх контейнеров 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

Терминал Linux показывает команду и вывод создания контейнера Arch Linux через Distrobox.

Можно создать контейнер из любого образа:

distrobox create --name my-debian --image debian:latest
distrobox create --name my-fedora --image fedora:latest

Не прерывайте процесс создания контейнера. При прерывании он может повредиться и потребовать пересоздания.

Distrobox поддерживает более 30 дистрибутивов и совместим с образами Toolbox. Поддерживаемые имена образов перечислены в документации Distrobox.

Как установить приложение в контейнер Distrobox

Контейнер — это окружение, которое вы активируете. Все последующие команды выполняются внутри контейнера.

distrobox enter my-arch

Попробуйте систему. Завершите сессию командой exit.

Терминал Linux показывает команду для входа в контейнер Distrobox. Команда подсвечена, также подсвечена команда exit.

Часто удобнее выполнять одиночные команды без интерактивного входа. Пример установки Firefox в Arch:

distrobox enter my-arch -- sudo pacman -S firefox

Терминал Linux показывает команду установки Firefox в Arch Distrobox контейнер.

Если контейнер основан на другом дистрибутиве, используйте соответствующий менеджер пакетов.

Для 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

Терминал Linux рядом с окном браузера Firefox. В терминале — команда для запуска Firefox в контейнере Distrobox.

Команда блокирует терминал до завершения приложения. Удобнее создать 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:latest
distrobox 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

  1. Установите Podman и Distrobox.
  2. Убедитесь, что ~/.distroboxrc содержит container_manager=”podman”.
  3. Создайте контейнер (пример Arch):
distrobox create --name my-arch --image archlinux:latest
  1. Установите пакет без входа в интерактивный режим:
distrobox enter my-arch -- sudo pacman -S 
  1. Создайте alias для быстрого запуска:
alias appname="distrobox enter my-arch -- nohup appname >/dev/null 2>&1 &"
  1. Проверяйте обновления: distrobox upgrade my-arch.

  2. Если что-то пошло не так, см. Incident runbook.

Runbook при инциденте и откат

Сценарий: приложение перестало запускаться после обновления.

  1. Проверьте журналы контейнера:
distrobox enter my-arch -- journalctl -xe
  1. Попробуйте запустить контейнер в интерактивном режиме и воспроизвести ошибку:
distrobox enter my-arch
  1. Откат пакета внутри контейнера (если доступно):
distrobox enter my-arch -- sudo pacman -U /var/cache/pacman/pkg/.pkg.tar.zst
  1. Если проблема критична — создайте новый контейнер из чистого образа и переустановите приложение.

  2. Удалите повреждённый контейнер:

distrobox rm my-arch
  1. Восстановите данные из домашней папки на хосте (если применимо).

Шпаргалка команд и сниппеты

  • Создать контейнер: 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 контейнерами и всегда проверяйте скрипты, запускаемые через сеть.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как выбрать NVMe SSD для PS5
Консоли

Как выбрать NVMe SSD для PS5

Как очистить и перезапустить Print Spooler в Windows
Windows

Как очистить и перезапустить Print Spooler в Windows

Как выбрать недорогой Smart TV
Телевизоры

Как выбрать недорогой Smart TV

Доступ к Twitter через Tor: простая инструкция
Конфиденциальность

Доступ к Twitter через Tor: простая инструкция

Google вход в Next.js через NextAuth
Разработка

Google вход в Next.js через NextAuth

Поделиться библиотекой iTunes с iPhone и iPad
Инструкции

Поделиться библиотекой iTunes с iPhone и iPad