LXD をお気軽に試す

さて、前回、前々回は Vagrant を通じて VirtualBox 上に仮想マシンを作る話でしたが、VirtualBox のように、実機の機能を全てエミュレーションする技術は、「完全仮想化」と呼ばれます。

対して、「準仮想化」という技術があり、最近流行(?)の「コンテナ」というものがあります。有名なのは Doker ですね。

「完全仮想化」と「準仮想化」の違いについては、Google ッても死ぬほど出て来ますので、ここでは踏み込みません。

 

今回は、「準仮想化」の「コンテナ」の一種、「LXD」をお手軽に試す手段について書いてみます。

 

その方法は……、「完全仮想化」の VirtualBox 上で動かすホスト上に、「準仮想化」LXC コンテナを動かす、という変態的なものです(笑)。

※)本当は、前回の Vagrant 話は、LXC コンテナを VirtualBox 上の仮想ホスト上にバンバン自動で立てる……話の伏線になる予定でしたが、ディストリビューション謹製の公式 BOX ファイルを使うとしても、マシン構成とか思い通りの要件から外れていることが判明したので、今回は見送ります。またいずれかの機会にチャレンジということで。

使用ソフト

  • VirtualBox 5.1.26
  • Ubuntu Server 16.04.3 LTS(LVM 仮想ディスク2台構成)
  • LXD 2.10

ハードウェア事前設定

  • ストレージで、SATA コントローラーに、LXD 用 HDD を追加する。
  • ネットワークアダプター1 の割り当てを「ブリッジアダプター」に変更する。
  • 続いて、ネットワークアダプター1 で、「高度」→「プロミスキャスモード」を「全て許可」に変更する。

ちなみに、「プロミスキャスモード」の設定を忘れると、ネットワーク的に同一サブネット上にある実機とコンテナゲスト間でネットワークが疎通しなくなります。これで半日+半日のほぼ丸一日を無駄にしました……。

Ubuntu 16 インストール手順

Language English
Install Ubuntu Server
Language English
Country UnitedStates
Detect Keyboard Layout? No
configure the keyboard Japanese
Keyboard layout: Japanese
HostNage ubuntu16
Full name for the new user ubuntu
Username for your acount ubuntu
Password ************
Encrypt your home directory? No
time zone Asia/Tokyo
Partition disks Yes
Partitioning method Guided use entire disk and set up LVM
HTTP Proxy continue
How do you want to manage upgrades on this system? No automatic updates
software to install standard system, OpenSSH server
Install the GRUB master boot record? yes

「software to install」の項は、一見「Virtual Machine host」にもチェックを入れた方が良いように見えますが、無駄なソフトが入って、変なネットワークブリッジが出来ますので、ここではチェックしませんでした。

インストール後確認・初期作業

 

インストール時に「Virtual Machine host」を選んでしまうと、ここで「virbr0」という見慣れぬネットワークブリッジが出来ます。

その場合は、下記で消せます。

 

続いて、もしかして既に LXD が入っちゃってるかも知れなかったりするので、念のため確認。。。

 

入っちゃってるじゃないですか! 「Virtual Machine host」を選択しなかったのに、入っている……謎です。ッてか、意図的に入れてるとすれば、攻めすぎ ubuntu(笑)。

 

次に、root パスワードの設定とソフトウェアアップデートの適用、必要なパッケージの追加。

ブリッジ整理・追加

LXC で使用するネットワークブリッジの追加、LXC に追加したブリッジを使用するように設定を行います。

LXD 初期化

さて、ホスト側の準備が整いました。

続いて LXD を初期化して使用出来る状態にします。

 

最後に再び「lxc profile edit default」しているのは、念のため default プロファイルが初期化によって書き換わっていないか、確認しています。

CentOS7 コンテナ起動

 

同一サブネット内に DHCP サーバーがあれば、このように自動的に IP アドレスが割り当てられて、コンテナが立ち上がります。

最後にある「veth8D5VKR」は、コンテナが使用するブリッジアダプタで、コンテナ内からは、後述のように「eth0」として見えます。

 

ではさっそく、コンテナ内に入って、ネットワーク状態の確認、及び固定 IP の設定を行います。

 

コンテナのホストで実行する

# lxc exec cnt01 bash

についてはちょっと説明が必要でしょうか。

これは、LXC に対して

  • 以下のコマンドを実行しなさい(exec)
  • 対象のコンテナ名は「cnt01」
  • 実行コマンドの内容は「bash」

という意味になっています。

正式には「bash」ではなくて「/bin/bash」になるかと思います。

と、いうことは、別に「bash」でなくてもよくて、例えば「ip a」コマンドであれば、

 

と、わざわざコンテナに入らなくても、ホストからコンテナ側で好きなコマンドが実行出来ます。

というわけで、ホスト側にもし侵入でもされたら、怖いですね。怖いですね。とても怖いですね。VirtualBox 上のお試しで良かったですね(笑)。

とはいえ、一番最初の「ハードウェア事前設定」で、ネットワークアダプタタイプを「ブリッジ」にしていました。

同じ LAN 内の同じサブネット内の他実機からは、コンテナのホスト(つまり VirtualBox 内の仮想マシン)も、コンテナのゲストも、ネットワーク的に見えている状態となりますので、間違っても公衆無線 LAN に繋がったまま実験したりしないようにしましょう。

では、どのように「見える」状態かの確認……別名「疎通確認」をしておきましょう。

 

最後の「Linux」と言う名前のホストは、同一サブネットにある Linux 機(例の Gentoo 機)です。

考察

今回は特に考察することも無さそうですが、手順さえ踏み外さなければ、LXD コンテナ、意外と簡単に作成出来ます。

もちろん、今回は「LXD をお気軽に試す」とタイトル通りなので、「LXD で作成したコンテナを何に使うか」という点については、意図的に触れずにおきます。

同じコンテナの一種、Docker がそうであるように、もはやコンテナは「好事家のおもちゃ」を脱して、「いかに実利用されるか」の時代にさしかかっているのかも知れませんね。

参考 URL

  • http://gihyo.jp/admin/serial/01/linux_containers?start=20
  • http://hnakamur.github.io/blog/2016/05/07/start-using-lxd-2.0-on-ubuntu-16.04/
  • http://qiita.com/white_aspara25/items/723ae4ebf0bfefe2115c
  • http://hnakamur.github.io/blog/2016/05/07/how-to-use-fixed-ip-address-for-a-lxd-container/
  • http://www.linux-beginner.com/linux_setei9.html
  • http://blog.goo.ne.jp/takuminews/e/888ac886a472e666aac7854ec0755a6b
  • http://qiita.com/tabimoba/items/13411acd3d2e03651913
  • http://www.postcard.st/nosuz/tech/2011/09/17-23
  • http://kurochan-note.hatenablog.jp/entry/2017/01/31/190200

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください