Distroboxを使用して任意のLinuxディストリビューションから任意のプログラムを実行する方法

テーブルの上に置かれたノートパソコンの写真。

Distroboxは、コンピュータ内で任意のLinuxディストリビューションを起動できるシンプルなCLIツールです。VirtualBoxとは異なり、Distroboxは「オーバーレイ」を作成し、現在のシステムの上で異なるLinuxディストリビューションから任意のプログラムを実行できるようにします。ここでは、Distroboxの仕組みとそのインストールおよび使用方法を確認しましょう。

複数のLinuxディストリビューションを管理するためにDistroboxを使用する理由

Distroboxの最大のセールスポイントは、隔離されたインスタンスを使用するのではなく、ホストの上でゲストを実行することです。従来のVMと比較して、これによりホストのホームディレクトリ、外部デバイス、さらにはディスプレイサーバーにシームレスにアクセスできます。

Ubuntuが内部で2つの異なるディストリビューションを実行しているスクリーンショット。

ゲストとホストの間のこの密接な統合により、Distroboxを使用してユニークなことがいくつかできます。たとえば、UbuntuゲストにGUIアプリケーションをインストールし、そのショートカットをホストシステムのデスクトップにエクスポートできます。技術ライターとして、異なるアプリをテストおよび比較する際にこの機能が便利だと感じています。

2つのDistroboxインスタンスで実行されている2つのバージョンのVimのスクリーンショット。

最後に、Distroboxは非常に軽量です。これにより、複数のVMを実行するリソースがない低スペックのシステムに最適です。私の経験では、UbuntuとFedoraのゲストを約6時間実行しても、ホストの全体的なRAMの約900MBしか消費しませんでした。

Distroboxのインストールとテスト

Distroboxは、DockerやPodmanなどのコンテナデーモンを利用してディストリビューションを管理することによって機能します。そのため、Distroboxを展開する最初のステップは、マシンにDockerをインストールすることです。

Dockerデーモンがシステムで実行されていることを確認するには、そのバージョンを確認します:

docker --version

現在のユーザーをdockerシステムグループに追加します:

sudo adduser $USER docker

システムのパッケージマネージャを使用してDistroboxをダウンロードしてインストールします:

sudo apt install distrobox

-hフラグを付けてDistroboxを実行し、正しくインストールされていることを確認します。

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を実行し、オーバーレイの名前を続けて入力します。

余談ですが: DNFパッケージマネージャに関する包括的なガイドを見て、FedoraとRed Hat Enterprise Linuxの力を探求してください。

DistroboxでカスタムLinuxイメージを実行する

Fedora 39の他にも、Distrobox内で他のOCI互換のLinuxディストリビューションを実行することが可能で、たとえばArch Linuxがあります。

カスタムLinuxディストリビューションをインストールするには、createサブコマンドを-iフラグとともに実行し、OCI互換のイメージへのリンクを指定します。私の場合、オーバーレイのベースとしてQuay.ioのArch Linux Toolbxイメージを使用します:

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

Arch Linux Dockerコンテナを作成するプロセスを表示しているターミナル。

注意: 互換性のあるディストリビューションとそのダウンロードリンクのリストは、開発者のGithubページで見つけることができます。

完了したら、オーバーレイを起動し、新しいArch Linuxシステムに入ります:

distrobox enter arch-linux

Fedoraと同様に、ターミナルのホスト名を確認して、Arch Linuxを実行していることを確認します。

新しく生成されたDistroboxインスタンスに入るプロセスを表示しているターミナル。

Distroboxでのパッケージのインストールと実行

Distroboxの密接な統合の利点の1つは、ゲストシステムがホストマシンにネイティブであるかのように振る舞うことです。そのため、Distroboxで任意のプログラムをインストールして実行することは、通常のLinuxインストールと似ています。

Distroboxゲストにパッケージをインストールするには、まずオーバーレイディストリビューション内にいることを確認します:

distrobox enter arch-linux

注意: システム上の利用可能なオーバーレイをリストするには、distrobox lsを実行します。

ゲストディストリビューションのパッケージマネージャを使用して、必要なプログラムをインストールします。この場合、sudo pacman -S neofetchを実行して、Arch Linuxゲストシステムにneofetchをインストールします。

Distroboxインスタンス内で実行されているpacmanパッケージマネージャを表示しているターミナル。

オーバーレイ内で1回、外で1回、新しいパッケージをテストします。

Arch Linux DistroboxとUbuntuホストシステム間のプログラムの隔離を表示しているターミナル。

Distroboxオーバーレイの外からプログラムをインストールすることもできます。そのためには、enterサブコマンドの後に--オペレーターを使用します:

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

この機能は、ゲストシステムの外でプログラムを実行することにも拡張されます。たとえば、次のコマンドは、Arch Linuxゲストでneofetchを実行し、その出力をUbuntuホストシステムに表示します:

distrobox enter --name arch-linux -- neofetch

Ubuntuホスト上で実行されているArch Linuxインスタンス内のneofetchプログラムを表示しているターミナル。

知っておくと良いこと: 異なるパッケージマネージャを使用していますか? 異なるLinuxディストリビューションのための便利なパッケージマネージャーチートシートをチェックしてください。

オーバーレイプログラムをホストシステムにエクスポートする

--オペレーターは簡単な一時的なタスクに最適ですが、Distrobox「プロファイル」を作成して、ホストLinuxマシンから直接ゲストプログラムを実行することも可能です。これは、Distroboxゲストシステム内のプログラムに常にアクセスしたい場合に便利です。

ホストマシンにエクスポートするには、まずプログラムをインストールしたシステムに入ります:

distrobox enter arch-linux

コンテナ内からアプリケーションが正常に動作していることを確認します。私の場合、Arch Linux内のEmacsインストールをエクスポートしたいと思います。

Arch Linux Distroboxインスタンス内で実行されているEmacs GUIクライアントを表示しているスクリーンショット。

distrobox-export--appフラグとともに実行し、エクスポートしたいプログラムの名前を指定します:

distrobox-export --app emacs

ホストシステムのアプリケーションランチャーに移動し、プログラムアイコンをクリックして、新しくエクスポートしたアプリをテストします。

Emacs GUIクライアントを表示しているUbuntuアプリケーションランチャーのスクリーンショット。

Distroboxを使用してゲストOSをインストールおよび実行することは、Dockerとコンテナ技術でできることの一例に過ぎません。このプログラムがどのように機能するかを深く掘り下げるには、Dockerコンテナの実行と管理に関する入門書をチェックしてください。

画像クレジット:Kari Shea via Unsplash。すべての変更とスクリーンショットはRamces Redによるものです。