LXD とは?

LXD([lɛks'di:]🔈)は次世代のシステムコンテナおよび仮想マシンのマネージャーです。コンテナや仮想マシン内部で実行される完全な Linux システムに対する共通の使い勝手や操作感を提供します。

LXD は、多数の Linux ディストリビューションが利用できる、あらかじめビルドされたイメージをベースとしています。さまざまなタイプのストレージバックエンドやネットワークをサポートし、個人のラップトップやクラウドインスタンスからサーバーラック上のハードウェアまで、様々なハードウェアにインストールでき、色々なユースケースに対応する柔軟性と拡張性を備えています。

LXD を使うと、シンプルなコマンドラインツールや REST API を直接使ったり、サードパーティーのツールやインテグレーションを使ったりして、コンテナや仮想マシンといったインスタンスを管理できます。LXD はローカルとリモートからアクセスするための単一の REST API を実装しています。

LXD プロジェクトは Canonical Ltd によって設立され、現在は様々な企業や個人のコントリビュータの貢献のもとで Canonical Ltd が主導しています。

LXD を始めてみましょう

LXD とは何か? 何ができるのか? についてのより良いイメージを得るために、オンラインでの試用を試してみてください!

そして、ローカルで動作させたい場合は、LXDを使い始めるにはというページをご覧になってください。次の動画では、一般的なユースケースに対する簡単な使用例を紹介しています:

Installation and getting started

YouTube で HowTo やチュートリアルをご覧になることもできます:

コンテナと仮想マシン

LXD はシステムコンテナと仮想マシンをサポートします。

システムコンテナを実行するとき、LXD は完全なオペレーティングシステムを仮想的にシミュレートします。これを行うために、LXD はホストシステム上で動作しているカーネルが提供している機能を使います。

仮想マシンを実行するとき、LXD はホストシステムのハードウェアを使いますが、カーネルは仮想マシンが提供します。そのため、例えば仮想マシンでは異なるオペレーティングシステムを実行することに使えます。

アプリケーションコンテナ vs. システムコンテナ

例えば、Docker や Kubernetes が提供するようなアプリケーションコンテナは、単一のプロセスやアプリケーションをパッケージ化します。一方、システムコンテナは完全なオペレーティングシステムをシミュレートし、同時に複数のプロセスが実行できます。

そのため、アプリケーションコンテナは個別のコンポーネントを提供するのに適しています。一方、システムコンテナはライブラリー、アプリケーション、データベースなどの完全なソリューションを提供します。加えて、システムコンテナを使って、異なるユーザースペースを作成し、それぞれのユーザースペースに属するすべてのプロセスを隔離できます。これはアプリケーションコンテナが意図するところではありません。

Application and system containers

仮想マシン vs. システムコンテナ

仮想マシンは、完全に分離したオペレーティングシステムから、ホストシステムのハードウェアを使って物理マシンをエミュレートします。一方でシステムコンテナは、自身の環境を作る代わりにホストシステムの OS のカーネルを使います。いくつかのシステムコンテナを実行する場合、それらのコンテナはすべて同じカーネルを共有します。これにより、仮想マシンとくらべてより速く、より軽量になります。

LXD では、システムコンテナと仮想マシンの両方を作成できます。ホストのオペレーティングシステムのカーネルが、必要とするすべての機能に対応している場合、より小さいサイズとパフォーマンスの向上を達成するためにシステムコンテナを使うと良いでしょう。ホストシステムのカーネルがサポートしていない機能が必要だったり、完全に異なる OS を実行したい場合は、仮想マシンを使うと良いでしょう。

Virtual machines and system containers

機能

LXD の最も大きな特徴は次の通りです(訳注: 日本語翻訳版がある場合はそちらに移動します。オリジナルを見たい場合は「原文」リンクをクリックしてください):

コア API
インスタンスとプロファイル
バックアップとエクスポート
設定が可能であること

可用性

LXD は最近のあらゆる Linux ディストリビューションで動作します。LXD の開発元では Ubuntu パッケージを直接メンテナンスし、さらに主要な Linux ディストリビューションのほとんどで使える snap パッケージも公開しています。

それに加えて、LXD クライアントは Windows と macOS でも利用できます。Linux マシンで動作している LXD サーバーに接続する際にこのクライアントが使えます。

さらに詳しい情報を見たい場合は、LXD を使い始めるにはページをご覧ください。

Snapstore logo Chocolatey logo Homebrew logo

サードパーティーツールとのインテグレーション

LXD は Ansible、Juju、Terraform などの他のプラットフォームやツールと一緒に使うこともできます。

サードパーティーツールとのインテグレーションページで詳細をご覧いただけます。

サポート

LXD には二種類のリリースがあります:

  • LTS リリース
  • Feature (新機能) リリース

現在の LTS は LXD 5.0 で、2027 年 6 月までサポートされます。LTS ではバグフィックスとセキュリティアップデートを受けられますが、機能の追加は行われません。

Feature リリースは毎月リリースされ、バグフィックスと新機能が含まれています。通常のサポート期間は約一ヶ月か、次のリリースが行われるまでです。ディストリビューションによっては、自身がリリースした特定の Feature リリースについては、より長いサポートを提供するかもしれません。

Ubuntu LTS リリースに含まれる LXD に対する商用サポートは Canonical Ltd から受けることができます。

Canonical logo

LXC との関係

LXD は LXC の書き直しではありません。実際 LXD は新しい、より良いユーザ体験を提供するために LXC 上で構築されています。LXD はコンテナを作成したり管理したりするために liblxc とその Go バインディングを通して LXC を利用しています。

LXD は基本的には LXC ツールとディストリビューションテンプレートの仕組みの代わりとなる新しいもので、ネットワーク経由でコントロールできる特長を追加したものです。

言語、ライセンス、コントリビューション

LXD は Go で書かれています。フリーソフトウェアであり、Apache 2 ライセンスのもとで開発されています。

LXD のソースコードは GitHub 上で公開されています。

LXD に貢献するのに必要な CLA や同様の法的合意はありません。しかし、コミットを signed-off する必要があります (DCO - Developer Certificate of Ownership に従います)。詳しくはコントリビュート原文)をご覧ください。

GitHub logo