TenForward

技術ブログ。はてなダイアリーから移転しました

10 分で試せる lxd 0.3

このエントリの情報は古いです

(2015/04/08 追記) ubuntu-lxc の PPA の構成が変わっていますので、以下の add-apt-repository コマンドの例はそのまま実行できません。PPA の詳細は公式ページでご確認ください。
前回 (その1その2) lxd を試したことを書いてからまだ 1 ヶ月も経ってませんが、使い方がかなりがらっと変わった lxd 0.3 がリリースされていますので試してみました。0.2 からこんな感じだったようですが。

インストール

面倒なので Ubuntu 14.04.2 に lxd の PPA を追加してパッケージインストールしました。

ubuntu@lxd01:~$ sudo add-apt-repository ppa:ubuntu-lxc/lxd-daily
ubuntu@lxd01:~$ sudo apt-get update
ubuntu@lxd01:~$ sudo apt-get install lxd
ubuntu@lxd01:~$ dpkg -l lxd
  :(snip)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  lxd            0.3-0ubuntu1 amd64        Container hypervisor based on LXC

必要な設定もされていますし lxd も起動しています。ここでは ubuntu ユーザで試してます。

  • lxd デーモンは起動済み。"lxd" グループに属するユーザが lxd デーモンに接続できます。
    ubuntu@lxd01:~$ ps ax | grep lxd
    1085 ? Ssl 0:01 /usr/bin/lxd --group lxd
    1179 ? Ss 0:00 /usr/bin/lxd --group lxd
  • "ubuntu" ユーザは手元では "sudo" グループに属しているので (という条件だったと思う)、自動的に "lxd" グループに所属してます
    ubuntu@lxd01:~$ id
    uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lpadmin),111(sambashare),113(lxd)
  • rootで非特権コンテナを動かすためにsubuid/subgidにrootが追加済み
    ubuntu@lxd01:~$ cat /etc/subuid /etc/subgid
    ubuntu:100000:65536
    lxd:100000:65536
    root:100000:65536
    ubuntu:100000:65536
    lxd:100000:65536
    root:100000:65536

イメージの登録

lxd は自身に登録されたイメージからコンテナを作ります。lxd にイメージを登録するには、今の所(?) lxc 用のイメージをダウンロードしてきて変換するようです。lxc 用のイメージは images.linuxcontainers.org にあります。(lxc-create の download テンプレートが使うイメージ)

では、イメージを作りましょう(取得&変換&登録)。今の所 lxd-images というスクリプトがインストールされているのでそれを使います。Plamo 5.x の 64bit 版コンテナを使いましょう。イメージにエイリアスが付与できるようです (plamo, plamo/5.3, plamo/5.3/x86_64 という3つのエイリアスを付けた)。

ubuntu@lxd01:~$ lxd-images import lxc plamo 5.x amd64 --alias plamo --alias plamo/5.3 --alias plamo/5.3/x86_64
Downloading the GPG key for https://images.linuxcontainers.org
Downloading the image list for https://images.linuxcontainers.org
Validating the GPG signature of /tmp/tmp1dkupz2k/index.json.asc
Downloading the image: https://images.linuxcontainers.org/images/plamo/5.x/amd64/default/20150310_21:36/lxd.tar.xz
Validating the GPG signature of /tmp/tmp1dkupz2k/plamo-5.x-amd64-default-20150310_21:36.tar.xz.asc
Image imported as: 58ea935fd2ce326279a97d711b6a7c50419a638db1423b5ba21c3496c55f0c04
Setup alias: plamo
Setup alias: plamo/5.3
Setup alias: plamo/5.3/x86_64

イメージの確認

ubuntu@lxd01:~$ lxc image list
+-------+----------+--------+-------------+
| ALIAS |   HASH   | PUBLIC | DESCRIPTION |
+-------+----------+--------+-------------+
| plamo | 58ea935f | no     |             |
+-------+----------+--------+-------------+

コンテナの作成と起動

イメージからコンテナを作成して起動します。"plamo" イメージから "plamo01" コンテナを作成して起動。

ubuntu@lxd01:~$ lxc launch plamo plamo01
Creating container...done
Starting container...done

起動の確認。

ubuntu@lxd01:~$ lxc list
+---------+---------+----------------------+------+
|  NAME   |  STATE  |         IPV4         | IPV6 |
+---------+---------+----------------------+------+
| plamo01 | RUNNING | 10.0.3.70, 127.0.0.1 | ::1  |
+---------+---------+----------------------+------+

ubuntu@lxd01:~$ lxc info plamo01
Name: plamo01
Status: RUNNING
Init: 1191
Ips:
  eth0:	 IPV4	10.0.3.70
  lo:	 IPV4	127.0.0.1
  lo:	 IPV6	::1

コンテナ内でコマンドを実行してみましょう。これは前のエントリと同じです。

ubuntu@lxd01:~$ lxc exec plamo01 -- uname -a
Linux LXC_NAME 3.13.0-46-generic #77-Ubuntu SMP Mon Mar 2 18:23:39 UTC 2015 x86_64 GNU/Linux
ubuntu@lxd01:~$ lxc exec plamo01 -- lsb_release -a
LSB Version:	n/a
Distributor ID:	Plamo
Description:	Plamo Linux release 5.3.1
Release:	5.3.1
Codename:	n/a

UbuntuカーネルPlamo が動いてますな。