LXC 資料一覧

LXC 2.0導入手順

2016/5/7更新

対応バージョン: 2.0

LXC 2.0のコンテナを作成して各種管理を行う手順を示す。導入OSはUbuntu 16.04とする。

尚、LXC 1.0での手順は以下を参照のこと。

関連資料・記事

LXCインストール

# apt install lxc

テンプレートは以下が用意されている。

# ls /usr/share/lxc/templates
lxc-alpine     lxc-centos    lxc-fedora        lxc-oracle      lxc-sshd
lxc-altlinux   lxc-cirros    lxc-gentoo        lxc-plamo       lxc-ubuntu
lxc-archlinux  lxc-debian    lxc-openmandriva  lxc-slackware   lxc-ubuntu-cloud
lxc-busybox    lxc-download  lxc-opensuse      lxc-sparclinux

コンテナ作成から起動、削除まで

コンテナ作成

ここではUbuntuのテンプレートを使ってc1という名前のコンテナを作成する。

# lxc-create -t ubuntu -n c1

コンテナは以下の場所に格納される。

/var/lib/lxc/<コンテナ名>/

コンテナのルートファイルシステムは以下に作成され、bin、devなどひと通りのディレクトリ構成が作成される。

/var/lib/lxc/<コンテナ名>/rootfs

# ls /var/lib/lxc/c1/rootfs/
bin/   dev/  home/  lib64/  mnt/  proc/  run/	srv/  tmp/  var/
boot/  etc/  lib/   media/  opt/  root/  sbin/	sys/  usr/

容量にして335MB程度となる。

# du -sh /var/lib/lxc/c1/rootfs
335M	/var/lib/lxc/c1/rootfs

またコンテナ全体の設定は以下のファイルで行う。

/var/lib/lxc/<コンテナ名>/config

コンテナ起動

コンテナが作成できたら起動する。-dオプションを付けることによってデーモンモードで起動する。

# lxc-start -n c1 -d

コンテナに接続するにはlxc-consoleを使用する。デフォルトのユーザはubuntu(パスワードも同じ)である。

# lxc-console -n c1

コンテナから抜けるにはCtrl + aを入力し、続いてqを入力する。

コンテナ終了

コンテナを終了させるにはlxc-stopを使用する。

# lxc-stop -n c1

コンテナ削除

コンテナを削除するにはlxc-destroyを使用する。

# lxc-destroy -n c1

コンテナ情報出力

コンテナの情報はlxc-lsやlxc-infoで確認できる。

# lxc-ls
c1

# lxc-ls -f
NAME STATE   AUTOSTART GROUPS IPV4      IPV6 
c1   RUNNING 0         -      10.0.3.45 -    

# lxc-info -n c1
Name:           c1
State:          RUNNING
PID:            6077
IP:             10.0.3.45
CPU use:        0.21 seconds
BlkIO use:      4.00 KiB
Memory use:     12.89 MiB
KMem use:       0 bytes
Link:           vethBNRV8T
 TX bytes:      1.34 KiB
 RX bytes:      914 bytes
 Total bytes:   2.23 KiB

topコマンドのような統計情報を表示するにはlxc-topを使用する。

# lxc-top
Container       CPU    CPU    CPU     BlkIO        Mem
Name           Used    Sys   User     Total       Used
c1             0.22   0.12   0.07   4.00 KB   12.63 MB
TOTAL 1 of 1   0.22   0.12   0.07   4.00 KB   12.63 MB

コンテナの状態を監視するにはlxc-monitorを使用する。

# lxc-monitor

例えば起動しているコンテナを停止(lxc-stop -n c1)すると以下のような出力が得られる。

# lxc-monitor
'c1' changed state to [STOPPING]
'c1' changed state to [STOPPED]

コンテナ内のプログラム実行

外部からコンテナ内のプログラムを実行するにはlxc-consoleでコンソール接続してもよいが単純に一つのプログラムを実行するだけならlxc-executeを使用すればよい。

しかもコンテナを起動している必要もなく(起動しているとエラーになる)、実行速度も申し分ない。

# lxc-execute -n c1 -- uname -n
c1

コンテナ管理

コンテナのクローン作成

既存のコンテナをコピーしてクローンを作る場合lxc-copyを使用する(かつてのlxc-cloneの置き換え)。コピー元のコンテナは停止している必要がある。

# lxc-stop -n c1
# lxc-copy -n c1 -N c2
# lxc-ls -f
NAME STATE   AUTOSTART GROUPS IPV4 IPV6 
c1   STOPPED 0         -      -    -    
c2   STOPPED 0         -      -    -    

コンテナ内のプロセス制御

コンテナ内のプロセスを全て凍結するにはlxc-freezeを、凍結を解除するにはlxc-unfreezeをそれぞれ使用する。

# lxc-start -n c1

# lxc-freeze -n c1
# lxc-ls -f
NAME STATE   AUTOSTART GROUPS IPV4      IPV6 
c1   FROZEN  0         -      10.0.3.45 -    
c2   STOPPED 0         -      -         -    

# lxc-unfreeze -n c1
# lxc-ls -f
NAME STATE   AUTOSTART GROUPS IPV4      IPV6 
c1   RUNNING 0         -      10.0.3.45 -    
c2   STOPPED 0         -      -         -    

コンテナのスナップショット管理

コンテナのスナップショットを取得したりリストアするにはlxc-snapshotを使用する。スナップショットを取得するにはコンテナが停止している必要がある。

# lxc-stop -n c1
# lxc-ls -f
NAME STATE   AUTOSTART GROUPS IPV4      IPV6
c1   STOPPED 0         -      -         -
c2   STOPPED 0         -      -         -

# lxc-snapshot -n c1

取得したスナップショットはsnapXとして/var/lib/lxc/<コンテナ名>/snaps配下に格納される。-Lオプションで一覧が参照できる。

# lxc-snapshot -n c1 -L
snap0 (/var/lib/lxc/c1/snaps) 2016:05:07 20:18:33

# lxc-snapshot -n c1
# lxc-snapshot -n c1
# lxc-snapshot -n c1 -L
snap0 (/var/lib/lxc/c1/snaps) 2016:05:07 20:18:33
snap1 (/var/lib/lxc/c1/snaps) 2016:05:07 20:19:12
snap2 (/var/lib/lxc/c1/snaps) 2016:05:07 20:19:44

複数あるスナップショットのうち特定の時点にリストアしたい場合は-rオプションとともにスナップショット名を指定する。

# lxc-snapshot -n c1 -r snap1

スナップショットをリストアしても削除はされないので削除したい場合は-dオプションでスナップショット名を指定して明示的に削除する。

# lxc-snapshot -n c1 -d snap0
# lxc-snapshot -n c1 -d snap1
# lxc-snapshot -n c1 -d snap2
# lxc-snapshot -n c1 -L
No snapshots

その他にも様々なコマンドがあるがここでは割愛する。詳しくは公式サイトを参照のこと。

参考サイト