LXD 資料一覧
LXD 1.0導入手順
2015/7/5更新
対応バージョン: 0.7 via Ubuntu15.04
LXD 1.0上でコンテナを作成してコンソール接続するまでの一連の手順を示す。
尚、LXC 2.0での手順は以下を参照のこと。
関連資料・記事
インストール、サービス有効化 & 起動
インストール
% sudo apt install lxd
サービス有効化
% sudo systemctl enable lxd.service Synchronizing state for lxd.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d lxd defaults Executing /usr/sbin/update-rc.d lxd enable
サービス起動
% sudo systemctl start lxd.service % sudo systemctl status lxd.service ● lxd.service - Container hypervisor based on LXC Loaded: loaded (/lib/systemd/system/lxd.service; enabled; vendor preset: enabled) Active: active (running) since 日 2015-07-05 20:15:47 JST; 8s ago Main PID: 19582 (lxd) Memory: 276.0K CGroup: /system.slice/lxd.service ‣ 19582 /usr/bin/lxd --group lxd --tcp [::]:8443 7月 05 20:15:47 k1 systemd[1]: Started Container hypervisor based on LXC. 7月 05 20:15:47 k1 systemd[1]: Starting Container hypervisor based on LXC...
コンテナイメージインポート、コンテナ作成
コンテナのイメージはhttp://images.linuxcontainers.org/にて配布されており、lxd-imagesというPythonのフロントエンドを使うとダウンロードからインポートまでを自動化できる。
ここではCentOS 6(64bit)のコンテナイメージをインポートして「centos6」という名前を付ける。
% sudo lxd-images import lxc centos 6 amd64 --alias centos6 Downloading the GPG key for https://images.linuxcontainers.org Downloading the image list for https://images.linuxcontainers.org Validating the GPG signature of /tmp/tmppke5bbta/index.json.asc Downloading the image: https://images.linuxcontainers.org/images/centos/6/amd64/default/20150619_02:16/lxd.tar.xz Validating the GPG signature of /tmp/tmppke5bbta/centos-6-amd64-default-20150619_02:16.tar.xz.asc Image imported as: afae698680fcf11b915cc3b6f06b3af6c085a59efa4b368b80ddcf9d66b73e3d Setup alias: centos6 % sudo lxc image list +---------+--------------+--------+-------------+--------+-----------------------------+ | ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCH | UPLOAD DATE | +---------+--------------+--------+-------------+--------+-----------------------------+ | centos6 | afae698680fc | no | | x86_64 | Jul 5, 2015 at 9:16pm (JST) | +---------+--------------+--------+-------------+--------+-----------------------------+
コンテナイメージが用意できたらコンテナを作成する。ここでは「c6」という名前で作成する。
% sudo lxc launch centos6 c6 Creating container...done Starting container...done % sudo lxc list +------+---------+-----------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | EPHEMERAL | +------+---------+-----------+------+-----------+ | c6 | RUNNING | 10.0.3.18 | | NO | +------+---------+-----------+------+-----------+ % sudo lxc info c6 Name: c6 Status: RUNNING Init: 25633 Ips: eth0: IPV4 10.0.3.18 lo: IPV4 127.0.0.1 lo: IPV6 ::1
コンテナが作成されたら通常のコマンドが実行できる。
% sudo lxc exec c6 -- uname -a Linux c6 3.19.0-21-generic #21-Ubuntu SMP Sun Jun 14 18:31:11 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux % sudo lxc exec c6 -- cat /etc/issue CentOS release 6.6 (Final) Kernel \r on an \m
尚、コンテナ上のファイルシステムはホスト上の/var/lib/lxd/lxc/<コンテナ>/rootfsに格納される。
% sudo ls -l /var/lib/lxd/lxc/c6/rootfs 合計 84 dr-xr-xr-x 2 100000 100000 4096 6月 19 11:21 bin/ dr-xr-xr-x 2 100000 100000 4096 9月 23 2011 boot/ drwxr-xr-x 4 100000 100000 4096 6月 19 11:21 dev/ drwxr-xr-x 49 100000 100000 4096 7月 5 22:11 etc/ drwxr-xr-x 2 100000 100000 4096 9月 23 2011 home/ dr-xr-xr-x 7 100000 100000 4096 6月 19 11:21 lib/ dr-xr-xr-x 7 100000 100000 12288 6月 19 11:21 lib64/ drwxr-xr-x 2 100000 100000 4096 9月 23 2011 media/ drwxr-xr-x 2 100000 100000 4096 9月 23 2011 mnt/ drwxr-xr-x 2 100000 100000 4096 9月 23 2011 opt/ dr-xr-xr-x 2 100000 100000 4096 9月 23 2011 proc/ dr-xr-x--- 2 100000 100000 4096 7月 7 14:47 root/ dr-xr-xr-x 2 100000 100000 4096 6月 19 11:21 sbin/ drwxr-xr-x 2 100000 100000 4096 6月 19 11:21 selinux/ drwxr-xr-x 2 100000 100000 4096 9月 23 2011 srv/ drwxr-xr-x 2 100000 100000 4096 9月 23 2011 sys/ drwxrwxrwt 2 100000 100000 4096 7月 7 15:38 tmp/ drwxr-xr-x 13 100000 100000 4096 6月 19 11:21 usr/ drwxr-xr-x 17 100000 100000 4096 6月 19 11:21 var/ % sudo cat /var/lib/lxd/lxc/c1/rootfs/etc/issue CentOS release 6.6 (Final) Kernel \r on an \m
コンソール接続
コンテナが作成されたのでコンソールで接続してみる。接続は簡単でコンテナ上でシェルを実行すればよい。
% sudo lxc exec c6 bash [root@c6 ~]# uname -n c6 [root@c6 ~]# id uid=0(root) gid=0(root) groups=0(root) [root@c6 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 25: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:16:3e:67:2d:4b brd ff:ff:ff:ff:ff:ff inet 10.0.3.18/24 brd 10.0.3.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe67:2d4b/64 scope link valid_lft forever preferred_lft forever [root@c6 ~]# ip r default via 10.0.3.1 dev eth0 10.0.3.0/24 dev eth0 proto kernel scope link src 10.0.3.18 169.254.0.0/16 dev eth0 scope link metric 1025 [root@c6 ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 08:19 ? 00:00:00 /sbin/init root 226 1 0 08:19 ? 00:00:00 /sbin/dhclient -H c6 -1 -q -lf / root 266 1 0 08:19 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslo root 296 1 0 08:19 console 00:00:00 /sbin/mingetty --nohangup consol root 514 0 0 08:35 ? 00:00:00 bash root 521 1 0 08:35 ? 00:00:00 /sbin/mingetty --nohangup /dev/t root 522 514 0 08:35 ? 00:00:00 ps -ef [root@c6 ~]# exit exit
コンテナ起動・停止
コンテナの起動と停止はそれぞれlxc start、lxc sttopで行う。
% sudo lxc start c6 % sudo lxc list +------+---------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | EPHEMERAL | +------+---------+------+------+-----------+ | c6 | RUNNING | | | NO | +------+---------+------+------+-----------+ % sudo lxc stop c6 % sudo lxc list +------+---------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | EPHEMERAL | +------+---------+------+------+-----------+ | c6 | STOPPED | | | NO | +------+---------+------+------+-----------+ % sudo lxc exec c6 -- uname -a error: Container is not running.
コンテナ削除
lxc deleteを使用する。
% sudo lxc delete c6 % sudo lxc list +------+-------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | EPHEMERAL | +------+-------+------+------+-----------+ +------+-------+------+------+-----------+
Ephemeralコンテナ使用
LXD 0.7で実装されたEphemeralコンテナを使うとlxc stopでコンテナが停止するとコンテナ自体が削除される。
この機能を使うと揮発性のコンテナを作成することができる。
コンテナをEphemeralにするにはlxc launchコマンドに-eオプションを付けるだけでよい。
ここでは永続化コンテナのc1と揮発性コンテナのc2を作成してみる。
% sudo lxc launch centos6 c1 % sudo lxc launch centos6 c2 -e % sudo lxc list +------+---------+-----------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | EPHEMERAL | +------+---------+-----------+------+-----------+ | c1 | RUNNING | 10.0.3.21 | | NO | | c2 | RUNNING | 10.0.3.36 | | YES | +------+---------+-----------+------+-----------+
この状態で2つのコンテナを停止させてみるとc2だけコンテナそのものが削除されているのが分かる。
% sudo lxc stop c1 % sudo lxc stop c2 % sudo lxc list +------+---------+------+------+-----------+ | NAME | STATE | IPV4 | IPV6 | EPHEMERAL | +------+---------+------+------+-----------+ | c1 | STOPPED | | | NO | +------+---------+------+------+-----------+
関連資料・記事