Debian で LXC コンテナーを作ってみた

やったことを記録しておく。

  1. debootstrap でコンテナー用のファイルシステムを用意する。
  2. chroot でそのファイルシステム内でシェルを起動して、
    1. apt-get install makedev を実行して MAKEDEV が使えるようにする。
    2. MAKEDEV std を実行して基本的なデバイス ファイルを作成する。
    3. /etc/inittab を編集して tty3 以降のログインを無効にする。
  3. /var/lib/lxc/container/config ファイル (内容は後記) を用意する。
  4. ln -s /var/lib/lxc/container/config /etc/lxc/auto/container を実行して自動的にコンテナーが起動するようにする。
  5. lxc start container -d を実行してコンテナーを手動で起動する。

/var/lib/lxc/container/config ファイルはこんな感じである。

lxc.arch = i686
lxc.utsname = hostname
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.ipv4 = 192.0.2.9/24 192.0.2.255
lxc.network.ipv4.gateway = auto
lxc.tty = 4
lxc.rootfs = /var/lib/lxc/container/rootfs
lxc.cgroup.devices.deny = a
lxc.cgroup.devices.allow = c 1:3 rwm # /dev/null
lxc.cgroup.devices.allow = c 1:5 rwm # /dev/zero
lxc.cgroup.devices.allow = c 1:7 rwm # /dev/full
lxc.cgroup.devices.allow = c 1:8 rwm # /dev/random
lxc.cgroup.devices.allow = c 1:9 rwm # /dev/urandom
#lxc.cgroup.devices.allow = c 4:0 rwm # /dev/tty0
lxc.cgroup.devices.allow = c 5:0 rwm # /dev/tty
lxc.cgroup.devices.allow = c 5:1 rwm # /dev/console
lxc.cgroup.devices.allow = c 5:2 rwm # /dev/ptmx
lxc.cgroup.devices.allow = c 136:* rwm # /dev/pts/*
lxc.cgroup.devices.allow = c 254:0 rwm # /dev/rtc0
lxc.cap.drop = sys_module sys_time