UbuntuのLXDコンテナの紹介

コンテナは多くの理由で便利です。アプリケーションをシステムの他の部分から隔離します。ポータブルで、クローンしたり、他のオペレーティングシステムに移動したりするのが簡単です。そして、Linuxの場合、ディストリビューションにかかわらず同じ方法で機能し、適応が必要ありません。例えば、RedHatからUbuntuにコンテナを移動する必要がある場合、それは単純なコピー操作です。

Dockerは単一のアプリケーションを含むために設計された人気のソリューションです。例えば、MySQLデータベースサーバー。LXDは似た部分もありますが、完全なオペレーティングシステムを含むように設計されています。これにより、特定のシナリオで役立ちます。例えば、LXDコンテナを立ち上げ、データベースサーバーとhttpサーバーをインストールします。次に、その中にWordPressのウェブサイトを作成できます。以前のプロバイダに不満を持っているときには、このLXDコンテナを必要な場所に移動するだけで、クラウドからクラウドへ切り替えることができます。また、コンテナのクローンを作成するのが簡単なので、冗長性のある高可用性のセットアップを作成するために、複数のクラウドプロバイダにウェブサイトをアップロードすることもできます。

LXDは、QEMUやVirtualBoxのようにハードウェアを仮想化しないため、非常に高速で、ネイティブに近い実行速度を提供します。

LXDのインストールと設定

ターミナルを開き、LXDとZFSユーティリティをインストールします。これにより、コンテナを扱う際のいくつかの操作が迅速になり、ディスクスペースを節約できます。

sudo apt install zfsutils-linux lxd

lxd-apt-install

LXDの設定を開始します。

sudo lxd init

デフォルトの値を選択するには、ENTERを押します。

「新しいループデバイスのサイズ(GB単位)(最小1GB)[デフォルト=15GB]」では、多くのコンテナを作成することがわかっている場合、「50GB」などの別の値を選ぶことができます。

lxd-init-questions

LXDディストリビューションイメージを見つけて起動する

すべてのUbuntuイメージをリストするには:

lxc image list ubuntu: arch=amd64

lxd-ubuntu-images

多くの結果が表示されます。ARMプロセッサ(Raspberry Piデバイスがこのアーキテクチャを使用)が必要な場合は、arch=amd64を省略できます。

前の画像では、読みやすくするために結果が制限されています(|headを使用)。Ubuntu 18.04のフィンガープリント(84a71299044b)が強調表示されています。このディストリビューションでコンテナを起動したい場合、コマンドは次のようになります:

lxc launch ubuntu:84a71299044b

現時点では、これが権限拒否エラーを返します。「lxd」グループにいる必要があります。ユーザーはすでにこのグループに追加されていますが、アクティブにするにはログアウトして再ログインする必要があります。それを避けたい場合は、次のコマンドを使用し、「user」をあなたのユーザー名に置き換えてください:

execsu - user

lxd-user-active-groups

これで、lxcコマンドはsudoなしで動作します。

非UbuntuディストリビューションでLXDコンテナを起動する

このコマンドを使用して、他にどのディストリビューションが利用可能かを確認できます:

lxc image list images: arch=amd64

イメージを起動するには、フィンガープリントの代わりに、リスト内で利用可能な場合はエイリアス名を使用できます。

lxc launch images:debian/9

lxd-launch-debian-9

末尾に文字列を追加すると、コンテナの名前を選ぶことができます:

lxc launch images:debian/9 wordpress-site

LXDコンテナを管理する

すべてのコンテナをリストするには:

lxc list

lxd-lxc-list

「IPV4」列は特に、インスタンス上で実行しているサービスがあれば重要です。例えば、Apache httpサーバーがそのインスタンスで実行されている場合、ブラウザに「10.234.232.246」と入力すると、コンテナ内でホストされているウェブサイトが表示されます。

コンテナを停止するには:

lxc stop name_of_container

これは非Ubuntuディストリビューションでは非常に長くかかるか(失敗する可能性もあります)。コンテナにシェルを取得し、中に入ってからsystemctl poweroffを入力して停止するのが良いでしょう。

すべてが失敗した場合、強制的に停止するには:

lxc stop name_of_container --force

起動するには:

lxc start name_of_container

コンテナ内に移動するには:

lxc shell name_of_container

lxd-shell-debian

「sudo apt install」を使用してプログラムをインストールし、通常のLinuxディストリビューションで行うのと同じこと(例:Apacheサーバの設定)を行うことができます。コンテナから出る場合は、単に次のように入力します:

exit

LXDコンテナにファイルを送信/ダウンロードする

コンテナにファイルをアップロードするには:

lxc file push /path/to/local/file name_of_container/path/to/uploaded/file

作成されるファイルの名前も含めてください。ただのディレクトリではなく、アップロードしたい場所を指定します。以下に例を示します:

lxc file push lxd-apt-install.png accurate-colt/var/www/website/upload.png

ファイルの代わりにディレクトリをアップロードするには:

lxc file push /path/to/local/directory name_of_container/path/to/remote/directory --recursive--verbose

例:

lxc file push /bin accurate-colt/tmp --recursive--verbose

コンテナからメインオペレーティングシステムにディレクトリをダウンロードするには:

lxc file pull name_of_container/path/to/remote/directory /path/to/local/directory --recursive--verbose

例:

lxc file pull accurate-colt/tmp /tmp --recursive--verbose

結論

これでLXDコンテナの基本的な使用法をカバーしました。スナップショットやロールバック、CPUやRAMなどのリソースに制限をかける、コンテナをクローンするなど、より高度な機能があります。これらは、読者がこのテーマに興味を持っていると認識した場合、将来のチュートリアルで取り上げるかもしれません。