Быстрые переходы
Как часто вы натыкались на классное приложение, которого нет в репозиториях вашего дистрибутива? Обычно следующий шаг — попытаться поставить его через Brew, Flatpak или Snap, но это далеко не всегда срабатывает.
Разнообразие систем упаковки приложений в Linux — настоящая головная боль. Одни дистрибутивы используют похожие, но несовместимые форматы пакетов, другие — совсем другие способы установки. Flatpak и Snap пытались сгладить эти различия, но лишь добавили новых стандартов — как в известном комиксе XKCD. Вместо того, чтобы создавать очередной формат, имеет смысл объединить уже существующие — и тут на помощь приходит Distrobox.
Основы, на которых построен Distrobox
Прежде чем перейти к Distrobox, важно понять, на чём он основан: на Docker и Podman. Docker — это программа, которая изолирует процессы в отдельные контейнеры, не позволяя им напрямую взаимодействовать с вашей системой. Технология контейнеров базируется на Linux-механизмах, таких как namespaces и cgroups. Не погружайтесь в детали — главное понять, что контейнер служит изоляцией для процессов.
Docker называют контейнерным рантаймом. Podman — это альтернативный рантайм, почти точная копия Docker, но с важным отличием: Podman по умолчанию запускает контейнеры без root-прав, что существенно повышает безопасность — об этом мы ещё поговорим. В остальном Docker и Podman очень похожи, так что инструкции для Docker подойдут и для Podman.
Как работает Distrobox?
Distrobox стирает границы между дистрибутивами — он использует привычные технологии для установки пакетов, адаптированных к разным системам. Distrobox запускает выбранный контейнерный рантайм (Podman, Docker или Lilypod) и выполняет процессы внутри контейнера. Когда вы вводите команду Distrobox, она передаёт её соответствующему рантайму.
Почему это удобно? В отличие от обычного Docker или Podman, Distrobox плотно интегрирует контейнеры с вашей системой: они получают доступ к вашей домашней папке, могут видеть другие процессы и взаимодействовать с ними. Distrobox берёт на себя всю сложность настройки контейнера, чтобы приложения внутри работали на вашем компьютере так, будто они установлены «родным» способом.
Если задача контейнерного рантайма — изоляция процессов, то цель Distrobox — наоборот, глубокая интеграция без лишних настроек.
В официальной документации Distrobox под «плотной интеграцией» понимается предоставление доступа к домашнему каталогу пользователя, сокетам Wayland и X11, сетевым ресурсам, съёмным носителям (например, USB), системному журналу systemd, SSH-агенту, D-Bus, ulimits, /dev и базе udev и прочему.
Почему я рекомендую Podman вместо Docker
Лучший выбор для контейнерного рантайма — Podman, потому что он запускает контейнеры без root-прав, тогда как Docker обычно требует root-доступ. Важно помнить, что процессы внутри контейнера наследуют права контейнера, и при тесной интеграции с системой Distrobox это может стать уязвимостью. Контейнер с root-правами потенциально может захватить полный контроль над вашим компьютером.
Distrobox спрашивает пароль при запуске контейнера с root-доступом, что хотя бы частично защищает, но всё равно это не идеальный вариант.
Как установить Podman
Podman поддерживается минимум в десятке дистрибутивов. Вот команды для популярных систем.
Для Debian и производных (Ubuntu, Mint и др.):
Для дистрибутивов на базе Red Hat (Fedora и др.):
Для Arch Linux и подобных:
Podman обычно доступен в стандартных репозиториях. Главное — правильно его настроить в rootless mode. В некоторых дистрибутивах это нужно делать вручную — ознакомьтесь с документацией вашей системы, так как процесс отличается.
Как установить Distrobox
Distrobox поддерживается в более чем 30 дистрибутивах. После установки Podman (или Docker) достаточно поставить Distrobox через менеджер пакетов вашего дистрибутива. Вот примеры команд для популярных систем.
Для Debian и производных (Ubuntu, Mint и др.):
Для дистрибутивов на базе Red Hat (Fedora и др.):
Для Arch Linux и подобного:
Если Distrobox нет в репозиториях, его можно установить с помощью curl:
Внимание: команды вроде curl … | sh могут содержать вредоносный код — всегда внимательно проверяйте источник и скрипт перед запуском.
5 способов повысить безопасность Linux
Linux — надёжная система, но уязвимости всё же есть.
После установки Podman нужно указать его в конфигурации Distrobox в качестве контейнерного рантайма. Выполните команду ниже — обратите внимание, она перезапишет файл конфигурации:
Теперь ваша система готова к работе.
Создаём первый контейнер Distrobox
Контейнеры — это лёгкая прослойка поверх неизменяемых образов. Образы содержат базовую систему дистрибутива, а контейнер хранит пользовательские изменения. Установленные в контейнере пакеты живут там, а домашняя папка контейнера связана с вашей, так что настройки хранятся у вас.
Команда ниже создаст контейнер из образа по умолчанию:
А в этом примере создадим контейнер на базе Arch Linux:
Что такое Arch Linux и чем он отличается от других дистрибутивов?
Если думаете о переходе на Arch.
Можно создать контейнер из любого образа, например Debian:
Или Fedora:
Очень важно не прерывать процесс создания контейнера — иначе придётся начинать заново из-за повреждений.
Distrobox поддерживает более 30 дистрибутивов и множество версий. Если вы знакомы с Toolbox, образы из него тоже подойдут. Для удобства Distrobox ведёт широкий список доступных образов.
Как установить приложение в контейнер Distrobox
Контейнер — это среда, которую нужно активировать. После активации все команды выполняются внутри контейнера.
Можно зайти внутрь контейнера, чтобы лучше разобраться, как он работает. Заканчивайте сеанс командой exit.
Однако вместо того, чтобы заходить в контейнер для установки, удобнее запускать одиночные команды. Например, установка Firefox, который мы запускаем позже:
Если ваш контейнер создан для другого дистрибутива, используйте соответствующие команды установки.
Для Debian и производных (Ubuntu, Mint и др.):
Для систем на базе Red Hat (Fedora и др.):
Если команды установки кажутся сложными — сначала изучите, как работать с пакетным менеджером в терминале.
Podman отлично работает с sudo. Запуская контейнер в режиме без root, процессы внутри не могут получить больше прав, чем разрешено — это повышает безопасность вашей системы.
10 Docker-контейнеров, которые стоит запустить каждому домашнему пользователю
Сколько из них уже есть у вас?
Как запустить приложение в контейнере Distrobox
Чтобы открыть установленный Firefox, выполните:
Эта команда удерживает терминал занятым, пока Firefox не закроется, и она довольно длинная. Лучше создать алиас. Добавьте в файл конфигурации вашей оболочки строку:
Вы можете выбрать любое имя для алиаса.
Одна из главных фишек Distrobox — графические приложения работают без лишних настроек, поддерживаются X11 и Wayland. Также есть поддержка аппаратного ускорения на GPU — если это важно, изучайте документацию Distrobox.
Как правильно мыслить контейнерами Distrobox
Как уже говорилось, контейнер — это слой над образом. Distrobox позволяет использовать один образ для нескольких контейнеров. Например, если вы создаёте контейнер на Debian:
Он загрузит базовый образ Debian и создаст контейнер поверх него. Если создать два контейнера:
Они будут использовать один и тот же образ, но каждый — отдельный контейнер. Установка пакета в deb-1 не скажется на deb-2 или deb-3. Однако настройки сохраняются в вашей домашней папке и общие для всех контейнеров.
Как определить, сколько контейнеров создать? Обычно — по одному на каждый дистрибутив. Например, если вам нужна программа из AUR (сообщественный репозиторий Arch), можно создать контейнер Arch. Если есть три пакета в Debian — делаете один Debian-контейнер и ставите их туда. Если версии программ конфликтуют, логичнее разделить их по контейнерам.
Другие полезные команды Distrobox
Главный источник информации о командах — меню --help:
Для справки по конкретной команде добавляйте --help, например для create:
Создание временных контейнеров
Если нужно быстро что-то проверить, можно использовать временные контейнеры. Они удаляются автоматически после завершения работы:
Учтите, что такие контейнеры запускаются медленнее, так как каждый раз полностью инициализируются заново.
Подробнее о параметрах смотрите, используя distrobox ephemeral --help.
Управление контейнерами
Контейнеры Distrobox — это отдельная подсистема: вы создаёте, запускаете, останавливаете, удаляете, обновляете и поддерживаете их в порядке. Вот основные команды для этого.
Чтобы увидеть список контейнеров в системе:
Если хотите удалить контейнер, сначала остановите его, затем удалите:
Останавливать контейнер перед удалением необязательно — Distrobox спросит, хотите ли принудительно удалить работающий контейнер.
Часто хочется обновить все контейнеры сразу:
Или обновить конкретный контейнер:
Команда обновления использует менеджер пакетов внутри контейнера. Не забывайте регулярно обновлять контейнеры. При удалении контейнера удаляются и все его обновления.
Чтобы удалить программу, используйте пакетный менеджер вашего дистрибутива внутри контейнера. Например, чтобы удалить Firefox из Arch Linux контейнера:
Для систем на базе Red Hat (Fedora и др.):
Для Debian и производных:
Как удалить Distrobox
Если вам не понравился Distrobox и решили полностью убрать его, вот нужные команды.
Если устанавливали через curl, используйте такую же команду curl для удаления:
В остальных случаях для Debian и производных (Ubuntu, Mint и др.):
Для систем на базе Red Hat (Fedora и др.):
Для Arch Linux и его производных:
Главная особенность Distrobox — это тесная интеграция с вашим компьютером. В мире Docker это скорее минус — Docker стремится изолировать, а Distrobox наоборот — интегрировать. Это главное отличие. Важно понимать, что запуск контейнеров с root-правами и запуск приложений внутри контейнера от root — разные вещи. Я категорически рекомендую использовать Podman без root, его выбор поддерживают и разработчики Distrobox.
И самое главное — берегите систему: с осторожностью относитесь к запуску контейнеров с root-доступом и не запускайте в них приложения с ограниченными правами, это может создать ложное чувство безопасности и привести к повышению привилегий.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Вы также можете найти наши материалы в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru