LXDとは何ですか?
LXD(「Lex-Dee」と発音)は、現在CanonicalでサポートされているLXC(Linux Containers)上に構築されたシステムコンテナーマネージャーです。 LXDの目標は、仮想マシンと同様のエクスペリエンスを提供することですが、仮想化ではなくコンテナー化を通じて提供します。アプリケーションを提供するためのDockerと比較して、LXDは、スナップショット、ライブマイグレーション、ストレージ管理などの追加機能を備えたほぼ完全なOS機能を提供します。
LXDの主な利点は、サポートできる高密度のコンテナーと、仮想マシンと比較して提供されるパフォーマンスです。 2GBのRAMを搭載したコンピューターは、半ダースのコンテナーを適切にサポートできます。さらに、LXDは主要なLinuxディストリビューションのコンテナーイメージを公式にサポートしています。コンテナで実行するLinuxディストリビューションとバージョンを選択できます。
このガイドでは、LXDで動作するようにLinodeをセットアップする方法、LXDが実際にどのように動作するか、および一般的な問題をトラブルシューティングする方法について説明します。
注 簡単にするために、コンテナという用語 このガイド全体で、LXDコンテナを説明するために使用されます。
始める前に
-
まだ行っていない場合は、Linodeアカウントとコンピュートインスタンスを作成します。 Linode入門とコンピューティングインスタンスの作成ガイドをご覧ください。
-
コンピューティングインスタンスのセットアップと保護ガイドに従って、システムを更新してください。また、タイムゾーンの設定、ホスト名の構成、制限付きユーザーアカウントの作成、SSHアクセスの強化を行うこともできます。
LXDを設定するときは、コンテナデータを外部ボリューム(ブロックストレージボリュームなど)またはLinodeにマウントされたディスクに保存できます。
ブロックストレージボリューム
-
Linodeガイドでブロックストレージを使用する方法に従って、サイズが少なくとも20GBのブロックストレージボリュームを作成します。 Linodeに接続します。デバイス名とボリュームへのパスをメモします。
注意 しないでください ボリュームをフォーマットし、 /etc/fstab
に追加しないでください 。 -
構成プロファイルを編集し、起動設定で GRUB 2を選択します カーネルとして。詳細については、KVMLinodeでディストリビューション提供のカーネルを実行するを参照してください。
-
LinodeManagerからLinodeを再起動します。
ディスク
-
Linode Managerで、ディスクを見つけます セクションをクリックし、新しいディスクを作成をクリックします 。
注 Linodeの配布ディスクに使用可能なディスク容量の100%がすでに割り当てられている場合は、ストレージディスクを作成する前にディスクのサイズを変更する必要があります。詳細については、ディスクのサイズ変更を参照してください。 -
Linodeの構成プロファイルを編集します。 デバイス割り当てのブロックの下 、新しいディスクを
/dev/sdc
に割り当てます 。このパスをメモします。これは、次のセクションでLXDを構成するときに必要になります。 -
起動設定の下 GRUB 2を選択します カーネルとして。
-
LinodeManagerからLinodeを再起動します。
LXDを初期化する
-
パッケージをインストールする
lxd
およびzfsutils-linux
:sudo apt install lxd zfsutils-linux
-
Unixユーザーを
lxd
に追加します グループ:sudo usermod -a -G lxd username
-
この変更を有効にするには、新しいSSHセッションを開始します。
-
lxd init
を実行します LXDを初期化するには:sudo lxd init
初期化プロセス中に何度かプロンプトが表示されます。 を除くすべてのオプションのデフォルトを選択します
Use existing block device?
このオプションでは、はいを選択します 次に、前のセクションで追加したストレージボリュームへのパスを入力します。
LXDコマンド
-
すべてのコンテナを一覧表示します:
lxc list
Generating a client certificate. This may take a minute... If this is your first time using LXD, you should also run: sudo lxd init To start your first container, try: lxc launch ubuntu:16.04 +------+-------+------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+-------+------+------+------+-----------+
-
利用可能なすべてのコンテナイメージを一覧表示します:
lxc image list images:
+---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+ | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE | +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+ | alpine/3.4 (3 more) | 39a3bf44c9d8 | yes | Alpine 3.4 amd64 (20180126_17:50) | x86_64 | 2.04MB | Jan 26, 2018 at 12:00am (UTC) | +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+ | alpine/3.4/armhf (1 more) | 9fe7c201924c | yes | Alpine 3.4 armhf (20170111_20:27) | armv7l | 1.58MB | Jan 11, 2017 at 12:00am (UTC) | +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+ | alpine/3.4/i386 (1 more) | d39f2f2ba547 | yes | Alpine 3.4 i386 (20180126_17:50) | i686 | 1.88MB | Jan 26, 2018 at 12:00am (UTC) | +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+ | alpine/3.5 (3 more) | 5533a5247551 | yes | Alpine 3.5 amd64 (20180126_17:50) | x86_64 | 1.70MB | Jan 26, 2018 at 12:00am (UTC) | +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+ | alpine/3.5/i386 (1 more) | 5e93d5f4cae1 | yes | Alpine 3.5 i386 (20180126_17:50) | i686 | 1.73MB | Jan 26, 2018 at 12:00am (UTC) | +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+ | alpine/3.6 (3 more) | 5010616d9a24 | yes | Alpine 3.6 amd64 (20180126_17:50) | x86_64 | 1.73MB | Jan 26, 2018 at 12:00am (UTC) | +---------------------------------+--------------+--------+------------------------------------------+---------+----------+-------------------------------+ .....................................................................
注 エイリアスとフィンガープリントの最初の2列は、起動時にコンテナイメージを指定するために使用できる識別子を提供します。 -
mycontainer
という名前の新しいコンテナを起動します :lxc launch ubuntu:16.04 mycontainer
Creating mycontainer Starting mycontainer
-
コンテナのリストをチェックして、新しいコンテナが実行されていることを確認します。
lxc list
+-------------+---------+-----------------------+---------------------------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +-------------+---------+-----------------------+---------------------------+------------+-----------+ | mycontainer | RUNNING | 10.142.148.244 (eth0) | fde5:5d27:...:1371 (eth0) | PERSISTENT | 0 | +-------------+---------+-----------------------+---------------------------+------------+-----------+
-
mycontainer
で基本的なコマンドを実行します :lxc exec mycontainer -- apt update lxc exec mycontainer -- apt upgrade
注 文字 --
lxc
に指示する これ以上コマンドラインパラメータを解析しないコマンド。 -
mycontainer
内でシェルセッションを開きます :lxc exec mycontainer -- sudo --login --user ubuntu
To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. [email protected]:~$
注 Ubuntuコンテナイメージには、デフォルトでユーザー名
ubuntu
の非rootアカウントがあります 。このアカウントはsudo
を使用できます 管理タスクを実行するためにパスワードは必要ありません。sudo
コマンドは、既存のアカウントubuntu
へのログインを提供します 。 -
コンテナログを表示する:
lxc info mycontainer --show-log
-
コンテナを停止します:
lxc stop mycontainer
-
コンテナを削除します:
lxc delete mycontainer
Apache Web Server with LXD
このセクションでは、コンテナを作成し、Apache Webサーバーをインストールして、適切なiptables
を追加します。 ポスト80を公開するためのルール。
-
新しいコンテナを起動します:
lxc launch ubuntu:16.04 web
-
コンテナ内のパッケージリストを更新します。
lxc exec web -- apt update
-
ApacheをLXDコンテナにインストールします。
lxc exec web -- apt install apache2
-
iptables
を追加します ポート80を公開するルール。誰かがパブリックIPアドレスを介してポート80に接続すると、このルールはそれらをコンテナのポート80にリダイレクトします。your_public_ip
を置き換える必要があります およびyour_container_ip
このコマンドでは、パブリックIPとコンテナIPをそれぞれ使用します。PORT=80 PUBLIC_IP=your_public_ip CONTAINER_IP=your_container_ip sudo -E bash -c 'iptables -t nat -I PREROUTING -i eth0 -p TCP -d $PUBLIC_IP --dport $PORT -j DNAT --to-destination $CONTAINER_IP:$PORT -m comment --comment "forward to the Apache2 container"'
-
iptables
を作成しますiptables-persistent
をインストールして、再起動時にルールを保持します 。 IPv4およびIPv6ルールを保存するように求められたら、[はい]をクリックします それらを保存するために。sudo apt install iptables-persistent
-
ローカルコンピューターから、WebブラウザーでLinodeのパブリックIPアドレスに移動します。デフォルトのApacheページが表示されます:
次のステップ
単一のWebサイトを使用する場合は、単一のiptables
ウェブサイトコンテナへのルールで十分です。複数のWebサイトを使用する場合は、NGINXなどのWebサーバーをインストールし、コンテナーにリバースプロキシを設定する必要があります。 iptables
その後、ルールはこのコンテナにリダイレクトされます。
詳細情報
このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。
- LXDの紹介
- LXD2.0のブログ投稿シリーズ
- LXDサポートコミュニティ
- LXDをオンラインで試す