LXD とは? ¶
LXD([lɛks'di:]🔈)は次世代のシステムコンテナおよび仮想マシンのマネージャーです。コンテナや仮想マシン内部で実行される完全な Linux システムに対する共通の使い勝手や操作感を提供します。
LXD は、多数の Linux ディストリビューションが利用できる、あらかじめビルドされたイメージをベースとしています。さまざまなタイプのストレージバックエンドやネットワークをサポートし、個人のラップトップやクラウドインスタンスからサーバーラック上のハードウェアまで、様々なハードウェアにインストールでき、色々なユースケースに対応する柔軟性と拡張性を備えています。
LXD を使うと、シンプルなコマンドラインツールや REST API を直接使ったり、サードパーティーのツールやインテグレーションを使ったりして、コンテナや仮想マシンといったインスタンスを管理できます。LXD はローカルとリモートからアクセスするための単一の REST API を実装しています。
LXD プロジェクトは Canonical Ltd によって設立され、現在は様々な企業や個人のコントリビュータの貢献のもとで Canonical Ltd が主導しています。
LXD を始めてみましょう ¶
LXD とは何か? 何ができるのか? についてのより良いイメージを得るために、オンラインでの試用を試してみてください!
そして、ローカルで動作させたい場合は、LXDを使い始めるにはというページをご覧になってください。次の動画では、一般的なユースケースに対する簡単な使用例を紹介しています:
YouTube で HowTo やチュートリアルをご覧になることもできます:
コンテナと仮想マシン ¶
LXD はシステムコンテナと仮想マシンをサポートします。
システムコンテナを実行するとき、LXD は完全なオペレーティングシステムを仮想的にシミュレートします。これを行うために、LXD はホストシステム上で動作しているカーネルが提供している機能を使います。
仮想マシンを実行するとき、LXD はホストシステムのハードウェアを使いますが、カーネルは仮想マシンが提供します。そのため、例えば仮想マシンでは異なるオペレーティングシステムを実行することに使えます。
アプリケーションコンテナ vs. システムコンテナ ¶
例えば、Docker や Kubernetes が提供するようなアプリケーションコンテナは、単一のプロセスやアプリケーションをパッケージ化します。一方、システムコンテナは完全なオペレーティングシステムをシミュレートし、同時に複数のプロセスが実行できます。
そのため、アプリケーションコンテナは個別のコンポーネントを提供するのに適しています。一方、システムコンテナはライブラリー、アプリケーション、データベースなどの完全なソリューションを提供します。加えて、システムコンテナを使って、異なるユーザースペースを作成し、それぞれのユーザースペースに属するすべてのプロセスを隔離できます。これはアプリケーションコンテナが意図するところではありません。
仮想マシン vs. システムコンテナ ¶
仮想マシンは、完全に分離したオペレーティングシステムから、ホストシステムのハードウェアを使って物理マシンをエミュレートします。一方でシステムコンテナは、自身の環境を作る代わりにホストシステムの OS のカーネルを使います。いくつかのシステムコンテナを実行する場合、それらのコンテナはすべて同じカーネルを共有します。これにより、仮想マシンとくらべてより速く、より軽量になります。
LXD では、システムコンテナと仮想マシンの両方を作成できます。ホストのオペレーティングシステムのカーネルが、必要とするすべての機能に対応している場合、より小さいサイズとパフォーマンスの向上を達成するためにシステムコンテナを使うと良いでしょう。ホストシステムのカーネルがサポートしていない機能が必要だったり、完全に異なる OS を実行したい場合は、仮想マシンを使うと良いでしょう。
機能 ¶
LXD の最も大きな特徴は次の通りです(訳注: 日本語翻訳版がある場合はそちらに移動します。オリジナルを見たい場合は「原文」リンクをクリックしてください):
- コア API
- インスタンスとプロファイル
- バックアップとエクスポート
-
- バックアップとリカバリー(原文)(LXD が管理するすべてのオブジェクトに対して)
- スナップショット(原文)(インスタンスの状態の保存とリストア)
- コンテナとイメージの転送(原文)(イメージを使い、異なるホスト間で)
- ライブマイグレーション(原文) (CRIUを使用)
- 設定が可能であること
可用性 ¶
LXD は最近のあらゆる Linux ディストリビューションで動作します。LXD の開発元では Ubuntu パッケージを直接メンテナンスし、さらに主要な Linux ディストリビューションのほとんどで使える snap パッケージも公開しています。
それに加えて、LXD クライアントは Windows と macOS でも利用できます。Linux マシンで動作している LXD サーバーに接続する際にこのクライアントが使えます。
さらに詳しい情報を見たい場合は、LXD を使い始めるにはページをご覧ください。
サードパーティーツールとのインテグレーション ¶
LXD は Ansible、Juju、Terraform などの他のプラットフォームやツールと一緒に使うこともできます。
サードパーティーツールとのインテグレーションページで詳細をご覧いただけます。
サポート ¶
LXD には二種類のリリースがあります:
- LTS リリース
- Feature (新機能) リリース
現在の LTS は LXD 5.0 で、2027 年 6 月までサポートされます。LTS ではバグフィックスとセキュリティアップデートを受けられますが、機能の追加は行われません。
Feature リリースは毎月リリースされ、バグフィックスと新機能が含まれています。通常のサポート期間は約一ヶ月か、次のリリースが行われるまでです。ディストリビューションによっては、自身がリリースした特定の Feature リリースについては、より長いサポートを提供するかもしれません。
Ubuntu LTS リリースに含まれる LXD に対する商用サポートは Canonical Ltd から受けることができます。
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 に従います)。詳しくはコントリビュート(原文)をご覧ください。