LXC 資料一覧
2014/6/12更新
対応バージョン: 1.0
LXC 1.0のコンテナを作成してコンソール接続するまでの一連の手順を示す。
尚、LXC 2.0での手順は以下を参照のこと。
関連資料・記事
準備
導入OS
Ubuntu 14.04
インストール
% sudo apt-get install lxc
コンテナ作成
ここでは"c1"という名前のUbuntuのコンテナを作る。
% sudo lxc-create -t ubuntu -n c1
/var/cache/lxc/trusty/rootfs-amd64配下のファイルが/var/lib/lxc/c1/rootfsにコピーされ、そこがコンテナのルートファイルシステムになる。
コンテナの起動
先ほど作ったコンテナ"c1"を-d(デーモンモード)で起動する。
% sudo lxc-start -n c1 -d
動作状況を確認する。コンテナのIPアドレスはDHCPで割り当てられている。
% sudo lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ------------------------------------------ c1 RUNNING 10.0.3.167 - NO
コンソール接続
作成したコンテナ名と同じアカウント(パスワードも同じ)が作成されているのでコンソール接続する(切断はCtrl + a, q)。
(lxc-consoleを使う場合)
% sudo lxc-console -n c1 c1 login: ubuntu Password: ******
(sshを使う場合)
% sudo lxc-info -n c1 Name: c1 State: RUNNING PID: 4326 IP: 10.0.3.167 CPU use: 1.04 seconds BlkIO use: 400.00 KiB Memory use: 10.39 MiB KMem use: 0 bytes Link: vethUC142S TX bytes: 11.10 KiB RX bytes: 20.82 KiB Total bytes: 31.92 KiB % ssh ubuntu@<lxc-infoで表示されたIPアドレス> Password: ******
コンソール接続したらコンテナ内の環境であることを確認する。
ubuntu@c1:~$ hostname c1 ubuntu@c1:~$ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 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 6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:16:3e:63:5d:ff brd ff:ff:ff:ff:ff:ff inet 10.0.3.167/24 brd 10.0.3.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe63:5dff/64 scope link valid_lft forever preferred_lft forever
コンテナのシャットダウン
コンテナ内でshutdownを実行するか、コンテナを起動したホスト上でlsx-stopを実行する。
% sudo lxc-stop -n c1 % sudo lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ------------------------------------ c1 STOPPED - - NO
コンテナ制御
OS起動時のコンテナ自動起動設定
コンテナの設定は/var/lib/lxc/c1/configに格納されるので以下の設定を変更する。
lxc.start.auto = 0|1
0(自動起動しない)
1(自動起動する)
lxc.start.delay = n
このコンテナが起動したあと次のコンテナが起動するまでに待つ秒数
自動起動を有効にするとlxc-lsでAUTOSTARTがYESになっているのが確認できる。
% sudo lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ------------------------------------ c1 STOPPED - - YES
ここでもう一つコンテナを作り、こちらは自動起動しないデフォルトの設定のままにしておく。
% sudo lxc-create -t ubuntu -n c2 % sudo lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ------------------------------------ c1 STOPPED - - YES c2 STOPPED - - NO
この状態でlxc-autostartを実行すると自動起動設定になっている"c1"のみが起動する。
% sudo lxc-autostart -a % sudo lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ------------------------------------------ c1 RUNNING 10.0.3.157 - YES c2 STOPPED - - NO
コンテナの削除
lxc-destroyを実行する。
% sudo lxc-destroy -n c2 % sudo lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ------------------------------------------ c1 RUNNING 10.0.3.157 - YES
コンテナの凍結
コンテナが使用するリソース(プロセスやメモリ空間)などを保持したまま一時的に使用を停止したい場合はコンテナを凍結させることができる。
% sudo lxc-freeze -n c1 % sudo lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ----------------------------------------- c1 FROZEN 10.0.3.157 - YES % sudo lxc-unfreeze -n c1 % sudo lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ------------------------------------------ c1 RUNNING 10.0.3.157 - YES