Как запустить любую программу из любой Linux-дистрибуции с помощью Distrobox

Фотография ноутбука на столе.

Distrobox — это простой инструмент CLI, который может загрузить любую Linux-дистрибуцию на вашем компьютере. В отличие от VirtualBox, Distrobox создает “оверлеи”, которые позволяют вам запускать любую программу из различных Linux-дистрибуций поверх вашей текущей системы. Здесь мы рассмотрим, что делает Distrobox уникальным и как вы можете его установить и использовать.

Почему стоит использовать Distrobox для управления несколькими Linux-дистрибуциями

Главное преимущество Distrobox заключается в том, что он запускает гостевые системы поверх хоста, а не использует изолированную инстанцию. По сравнению с традиционной виртуальной машиной это позволяет вам бесшовно получать доступ к домашнему каталогу вашего хоста, его внешним устройствам и даже к его дисплейному серверу.

Скриншот, показывающий Ubuntu, запускающий две разные дистрибуции внутри него.

Этот уровень тесной интеграции между гостем и хостом позволяет вам делать множество уникальных вещей с Distrobox. Например, вы можете установить графическое приложение на гостевой системе Ubuntu и экспортировать его ярлык на рабочий стол вашей хост-системы. Как технический писатель, я нахожу эту функцию полезной при тестировании и сравнении различных приложений.

Скриншот, показывающий две версии Vim, работающие на двух инстанциях Distrobox.

Наконец, Distrobox также невероятно легковесен. Это делает его идеальным для систем начального уровня, у которых нет ресурсов для запуска нескольких виртуальных машин. По моему опыту, запуск гостей Ubuntu и Fedora в течение примерно шести часов потреблял всего около 900 МБ общей оперативной памяти моего хоста.

Установка и тестирование Distrobox

В своей основе Distrobox работает, используя контейнерные демоны, такие как Docker и Podman, для управления своими дистрибуциями. Поэтому первым шагом в развертывании Distrobox является установка Docker на вашем компьютере.

Подтвердите, что демон Docker работает на вашей системе, проверив его версию:

docker--version

Добавьте вашего текущего пользователя в системную группу docker:

sudo adduser $USERdocker

Скачайте и установите Distrobox с помощью менеджера пакетов вашей системы:

sudo apt install distrobox

Убедитесь, что вы правильно установили Distrobox, запустив его с флагом -h.

Терминал, показывающий экран помощи Distrobox.

Развертывание вашего первого оверлея дистрибуции

С Distrobox, работающим, вы можете теперь установить ваш первый оверлей Linux-дистрибуции. Для этого разработчики предоставляют образ Fedora 39 OCI в качестве его стандартного установочного носителя.

Начните с запуска Distrobox с подкомандой create, за которой следует имя и имя хоста, которые вы хотите для вашего нового оверлея:

distrobox create --name YOUR-OVERLAY-NAME-HERE --hostname YOUR-CONTAINER-NAME-HERE

Введите “y”, затем нажмите Enter, чтобы загрузить и развернуть вашу новую оверлей-дистрибуцию.

Терминал, показывающий запрос подтверждения для создания нового инстанса Distrobox.

Примечание: в зависимости от аппаратного обеспечения вашей системы, установка гостевой системы в Distrobox может занять от 5 до 10 минут.

После завершения выполните следующую команду, чтобы загрузить и войти в вашу новую оверлей-дистрибуцию:

distrobox enter YOUR-OVERLAY-NAME-HERE

Подтвердите, что вы теперь находитесь внутри оверлейной системы, посмотрев на имя хоста в вашем терминальном приглашении.

Чтобы закрыть сеанс оверлея, нажмите Ctrl + D в терминале гостя, затем выполните distrobox stop, за которым следует имя вашего оверлея.

Кстати: исследуйте возможности Fedora и Red Hat Enterprise Linux, ознакомившись с нашим подробным руководством по менеджеру пакетов DNF.

Запуск пользовательского образа Linux на Distrobox

Помимо Fedora 39, возможно запустить другие совместимые с OCI Linux-дистрибуции внутри Distrobox, например, Arch Linux.

Чтобы установить пользовательский Linux-дистрибутив, выполните подкоманду create с флагом -i, за которым следует ссылка на совместимый с OCI образ. В моем случае я собираюсь использовать образ Arch Linux Toolbx с Quay.io в качестве основы для моего оверлея:

distrobox create --name arch-linux --hostname mte-archlinux-container --image quay.io/toolbx/arch-toolbox:latest

Терминал, показывающий процесс создания контейнера Docker Arch Linux.

Примечание: вы можете найти список совместимых дистрибутивов и их ссылки для загрузки на странице разработчика в Github.

После завершения загрузите оверлей и войдите в вашу новую систему Arch Linux:

distrobox enter arch-linux

Как и с Fedora, подтвердите, что вы теперь запускаете Arch Linux, проверив имя хоста вашего терминала.

Терминал, показывающий процесс входа в новый инстанс Distrobox.

Установка и запуск пакетов на Distrobox

Одним из преимуществ тесной интеграции Distrobox является то, что гостевые системы ведут себя так, как будто они являются родными для хост-машины. Поэтому установка и запуск любой программы в Distrobox аналогичны обычной установке Linux.

Чтобы установить пакет на гостевой системе Distrobox, сначала убедитесь, что вы находитесь внутри вашего оверлейного дистрибутива:

distrobox enter arch-linux

Примечание: вы можете перечислить доступные оверлеи на вашей системе, выполнив distrobox ls.

Используйте менеджер пакетов вашего гостевого дистрибутива, чтобы установить нужную вам программу. В этом случае я выполню sudo pacman -S neofetch, чтобы установить neofetch на своей гостевой системе Arch Linux.

Терминал, показывающий работу менеджера пакетов pacman внутри инстанса Distrobox.

Проверьте вашу новую программу, запустив ее один раз внутри оверлея и еще раз снаружи.

Терминал, показывающий изоляцию программы между Arch Linux Distrobox и хост-системой Ubuntu.

Вы также можете установить программу снаружи оверлея Distrobox. Для этого используйте подкоманду enter, за которой следует оператор --:

distrobox enter --name arch-linux --sudo pacman -s neofetch

Эта функция также распространяется на запуск программ вне вашей гостевой системы. Например, следующая команда запустит neofetch на моем госте Arch Linux и отобразит его вывод в моей хост-системе Ubuntu:

distrobox enter --name arch-linux -- neofetch

Терминал, показывающий программу neofetch внутри инстанса Arch Linux, работающего на хосте Ubuntu.

Полезно знать: используете другой менеджер пакетов? Ознакомьтесь с нашей полезной шпаргалкой по менеджерам пакетов для различных дистрибуций Linux.

Экспорт программы оверлея в хост-систему

Хотя оператор -- отлично подходит для простых одноразовых задач, также возможно создать “профили” Distrobox, которые позволяют вам запускать любые программы гостя непосредственно с вашей хост-системы Linux. Это полезно, если вы хотите иметь постоянный доступ к программе внутри вашей гостевой системы Distrobox.

Чтобы экспортировать в вашу хост-машину, сначала войдите в систему, где вы установили вашу программу:

distrobox enter arch-linux

Убедитесь, что ваше приложение работает правильно изнутри контейнера. В моем случае я хочу экспортировать свою установку Emacs внутри Arch Linux.

Скриншот, показывающий клиент GUI Emacs, работающий внутри инстанса Arch Linux Distrobox.

Запустите distrobox-export с флагом --app, за которым следует имя программы, которую вы хотите экспортировать:

distrobox-export --app emacs

Проверьте ваше новое экспортированное приложение, перейдя в меню приложений вашей хост-системы и нажав на значок программы.

Скриншот, показывающий меню приложений Ubuntu с клиентом GUI Emacs.

Установка и запуск гостевых ОС с помощью Distrobox — это всего лишь один из примеров того, что вы можете сделать с Docker и контейнерной технологией. Погрузитесь в то, как работает эта программа, ознакомившись с нашим вводным руководством по запуску и управлению контейнерами Docker.

Фото: Kari Shea через Unsplash. Все изменения и скриншоты сделаны Ramces Red.