Ubuntu 15.04 で一般ユーザで LXC コンテナを実行する

Ubuntu 15.04 で行った。 また、Ubuntu 14.04 上でも同じようにして LXC コンテナを作成、実行できることを確認した。

パッケージのインストール

apt-get install lxc uidmap

~/.config/lxc/default.conf

ディレクトリ ~/.config/lxc がなければ

mkdir ~/.config/lxc

で作成する。~/.config/lxc/default.conf を作成して

lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx
lxc.id_map = u 0 100000 65536
lxc.id_map = g 0 100000 65536

とする。

/etc/lxc/lxc-usernet

/etc/lxc/lxc-usernet に

<USERNAME> veth lxcbr0 10

を追加する。

コンテナの作成

Ubuntu 14.04 のコンテナを作成する。

lxc-create -t download -n p1 -- -d ubuntu -r trusty -a amd64

p1 という名前のコンテナができていることを

lxc-ls --fancy

として確認する。

コンテナの実行

p1 というコンテナを実行するには

lxc-start -n p1 -d

とする。

コンテナ実行時のトラブル

はじめは

lxc-start -n p1 -d

としたときに

Permission denied - could not access /home/<USERNAME>.  Please grant it 'x' access, or add an ACL for the container root.

というエラーが出てコンテナが起動しなかった。 ホームディレクトリのパーミッションを 700 にしてあったためだった。

chmod +x ~
chmod +x ~/.local
chmod +x ~/.local/share

として実行権限をつける。

コンテナのディレクトリ

このコンテナのファイルは ~/.local/share/lxc/p1 以下に置いてある。

lxc-stop -n p1

でコンテナの実行を終了する。

コンテナの root ユーザ

ubuntu という名前のユーザが存在するのだが、パスワードがわからなかった (セキュリティのために設定されていないというようなことが書いてあるが詳しくは理解していない)。 lxc-attach を使ってパスワードを再設定する。

lxc-attach -n p1

で端末にアクセスして

passwd ubuntu

lxc-attach だと端末の環境変数がうまく設定されないようなので以降は SSH を使用してアクセスする。

apt-get install openssh-server

で SSH サーバをインストールする。

コンテナの複製

コンテナ p1 を複製して p2 にするには

lxc-clone p1 p2

とする。

コンテナの停止

コンテナ p1 を停止するには

lxc-stop -n p1

とする。

コンテナ起動時に IP アドレスを指定する

lxc-start のオプションでコンテナの IP アドレスを指定できる。

lxc-start -n p1 -d -s lxc.network.ipv4=10.0.3.10

とすると、コンテナの IP アドレスが 10.0.3.10 になる。

参考

Tags of current page

,