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の設定を開始します。
sudo lxd initデフォルトの値を選択するには、ENTERを押します。
「新しいループデバイスのサイズ(GB単位)(最小1GB)[デフォルト=15GB]」では、多くのコンテナを作成することがわかっている場合、「50GB」などの別の値を選ぶことができます。

LXDディストリビューションイメージを見つけて起動する
すべてのUbuntuイメージをリストするには:
lxc image list ubuntu: arch=amd64
多くの結果が表示されます。ARMプロセッサ(Raspberry Piデバイスがこのアーキテクチャを使用)が必要な場合は、arch=amd64を省略できます。
前の画像では、読みやすくするために結果が制限されています(|headを使用)。Ubuntu 18.04のフィンガープリント(84a71299044b)が強調表示されています。このディストリビューションでコンテナを起動したい場合、コマンドは次のようになります:
lxc launch ubuntu:84a71299044b現時点では、これが権限拒否エラーを返します。「lxd」グループにいる必要があります。ユーザーはすでにこのグループに追加されていますが、アクティブにするにはログアウトして再ログインする必要があります。それを避けたい場合は、次のコマンドを使用し、「user」をあなたのユーザー名に置き換えてください:
execsu - user
これで、lxcコマンドはsudoなしで動作します。
非UbuntuディストリビューションでLXDコンテナを起動する
このコマンドを使用して、他にどのディストリビューションが利用可能かを確認できます:
lxc image list images: arch=amd64イメージを起動するには、フィンガープリントの代わりに、リスト内で利用可能な場合はエイリアス名を使用できます。
lxc launch images:debian/9
末尾に文字列を追加すると、コンテナの名前を選ぶことができます:
lxc launch images:debian/9 wordpress-siteLXDコンテナを管理する
すべてのコンテナをリストするには:
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
「sudo apt install」を使用してプログラムをインストールし、通常のLinuxディストリビューションで行うのと同じこと(例:Apacheサーバの設定)を行うことができます。コンテナから出る場合は、単に次のように入力します:
exitLXDコンテナにファイルを送信/ダウンロードする
コンテナにファイルをアップロードするには:
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などのリソースに制限をかける、コンテナをクローンするなど、より高度な機能があります。これらは、読者がこのテーマに興味を持っていると認識した場合、将来のチュートリアルで取り上げるかもしれません。