ククログ

株式会社クリアコード > ククログ > LXCコンテナにホスト側のユーザをバインドする方法

LXCコンテナにホスト側のユーザをバインドする方法

LXCコンテナを作ったとき、毎回自分の設定をコピーするのは面倒です。 dotfilesを変更する度にLXCコンテナ側に設定を反映するのは特に面倒です。

Ubuntuコンテナを作るときは--bindhomeオプションを付けることで自動的にユーザを追加することができます。 しかし、他のディストリビューション向けのテンプレートにはそのような機能はありません。 そこで、手動でホスト環境にいる自分ユーザをコンテナ側に追加してホームディレクトリを共有する手順を紹介します1

ここではFedora18のコンテナを使って説明します2

まず、コンテナを作成します。

$ sudo lxc-create -t fedora -n f18 -- --release 18 --arch x86_64

次にコンテナに追加したいユーザのuid/gidを調べます。

$ id -u
$ id -g

この2つの値を覚えておきます。ここではuid=1000,gid=1000とします。 また、ユーザ名とグループ名はfedoraとします。

コンテナにグループを追加してから、ユーザを追加します。

$ sudo chroot /var/lib/lxc/f18/rootfs groupadd --gid=1000 fedora
$ sudo chroot /var/lib/lxc/f18/rootfs useradd --uid=1000 --gid=fedora --create-home -s /bin/bash fedora

パスワードを設定します。ここではパスワードもfedoraにしてあります3

$ echo "fedora:fedora" | sudo chroot /var/lib/lxc/f18/rootfs chpasswd

ホームディレクトリを共有するための設定をコンテナに追加します。

$ sudo sh -c "echo '/home/fedora home/fedora none bind 0 0' >> /var/lib/lxc/f18/fstab"

追加したいユーザの分だけ、この手順を繰り返します。 これでコンテナを起動すると、追加したユーザが使えるようになっています。

まとめ

LXCコンテナにホスト側のユーザをバインドする方法を紹介しました。

  1. Ubuntuテンプレートでやっていることを手動でやります

  2. LXCのバージョンは1.0を想定しています

  3. /etc/shadowのエントリをコピーすればパスワードもホスト環境と同じものを使うことができます。