【LXD】爆速でLXD環境を構築する!!
LXDとは?
コンテナと言えばDockerが有名ですが、LXDというシステムコンテナマネージャーもあります。
イメージとしては、仮想マシンと認識していれば大丈夫でしょう。 LXDを使用すれば、多数のKinuxディストリビューションを使用し、容易に開発環境が構築できます。
無料で利用できることや、起動が高速なこと、Dockerを利用する際の1コンテナ1プロセスといったベストプラクティスはないのが特徴でしょうか。
ググってみると、"LXC"という単語もヒットしますが、これはLXDの機能強化前のものです。 なので、LXDでできることはLXCでも実現可能です。
使ってみる
ここでは、とりあえず早くローカル環境にLXDを構築し、試しにCentOSのコンテナをたててみることを目的としています。
(※ VirtualBoxなどのインストール方法は割愛していきます。)
わたしの環境は、macOSです。
用意する
まず、VirtualBoxをインストールします。
Downloads – Oracle VM VirtualBox
vagrantもインストールしておきます。
Download - Vagrant by HashiCorp
Boxの追加
UbuntuのBoxをインストールします。
推奨されているのは、xenial64ですがお好きなメーカーのヴァージョンを選択します。
選択したらURLを控えましょう。控えたら、以下のように修正します。
https://vagrantcloud.com/ubuntu/boxes/<xenial64>/versions/<20170929.0.0>/providers/virtualbox.box ※ "<>"で囲んだ部分が任意のものに変わります。
任意のディレクトリに移動し、以下を実行します。 ボックスの追加には、時間がかかるかもしれません。
$ vagrant box add ubuntu/xenial64 https://vagrantcloud.com/ubuntu/boxes/xenial64/versions/20170929.0.0/providers/virtualbox.box $ vagrant init ubuntu/xenia164 ※ ボックスの名前など、コマンドのオプションで指定可能 # vagrantコマンドで、ubuntuを起動 $ vagrant up
VagrantFIleが作成されていて、エラーが出ていなければ順調です。
LXDのインストール
Ubuntuに入って、lxdをsnapを使用してインストールします。
$ vagrnat ssh ## 以下、Ubuntuでの実行 # 最新にアップデート $ sudo apt update # インストール $ sudo su - $ snap install lxd # vagrantユーザーでもlxcコマンドが使用できるようにする(任意) $ sudo gpasswd -a vagrant lxd $ id ## 確認 uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),110(lxd)
LXDが動くか確認
なにも起動させていないので、空の表だけでればOK。
# コンテナ&イメージ確認 $ lxc list | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | $ lxc image list | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | SIZE | UPLOAD DATE |
LXDの初期設定
コンテナの起動の前に、設定をしてきます。 ここでは、細かい設定方法は省きます。
ただし、IPv6の設定のみnoを選択し、他はデフォルトを選択していきます。
# vagrantユーザーに戻っても、rootで実行しても大丈夫ですが、 # ここでは、vagrantユーザーで実行 # 途中の設定項目で、UIが変わって紫色の画面に移行しますが、表示されたIPなどをEnterで選択していきます。 $ sudo lxd init LXD has been successfully configured. ## これが出たら完了
CentOSのコンテナをたてる
# リモートから取得できるイメージを確認 $ lxc image alias list images: | grep centos | centos/6 | 8b47ce0dd288 | | | centos/6/amd64 | 8b47ce0dd288 | | | centos/6/default | 8b47ce0dd288 | | | centos/6/default/amd64 | 8b47ce0dd288 | | | centos/6/default/i386 | 4fc4ed167966 | | | centos/6/i386 | 4fc4ed167966 | | | centos/7 | ef750fe8dd4c | | | centos/7/amd64 | ef750fe8dd4c | | | centos/7/arm64 | 2418b61d1c47 | | | centos/7/armhf | 4112b64d31c2 | | | centos/7/default | ef750fe8dd4c | | | centos/7/default/amd64 | ef750fe8dd4c | | | centos/7/default/arm64 | 2418b61d1c47 | | | centos/7/default/armhf | 4112b64d31c2 | | | centos/7/default/i386 | 22f770b50316 | | | centos/7/default/ppc64el | 91279dabc143 | | | centos/7/i386 | 22f770b50316 | | | centos/7/ppc64el | 91279dabc143 | | # コンテナを起動 (今回はcentos/7を選択してみました) $ lxc launch images:centos/7 centos7 Creating centos7 Starting centos7 # 確認 (作成されていればOK) $ lxc list
これで完了です。
まとめ
Dockerとは違うコンテナを触ってみました。
私は業務の開発環境としても使用しています。(※ コスト面にも良いです笑 )
例えばAWSサービスを利用して、最小のインスタンスを建ててVPCにてセキュアなネットワークを構築。
LXDをインストールし、欲しい環境をインストール。
リモートからのアクセスを確立し、みんなで開発!
なんてことも、容易ですしVPCまわりをやったことない人にとっては勉強にもなりますし、みんなに喜んでもらえる環境にもなりそう!しかも、安い!
Ubuntuに依存してしまうということを除けば、扱いも共有も便利です。
作成した環境のイメージをエクスポートしたりすることも可能です。また、ホスト(自身のラップトップ)から、LXDで管理している環境に直でSSHすることも可能です。
LXDはDockerのイメージもありますので、コンテナonコンテナも可能。
Dockerよりは有名ではありませんが、この記事でやった環境を1回整えてしまえば開発も楽ちんですね!!
以上.