LXC 資料一覧

LXC 1.0導入手順

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