KVMからDockerへ移行

KVM環境でテスト環境をいくつかあげてるんだけどホストが複数台あって管理が面倒になってきたところで1台のホストが調子が悪くなってきたから普段あまり使わないゲストはDockerイメージにして1台のサーバに集約できないかやってみた話

まず、KVMのゲストはイメージファイルをqcow2で作成してる。
Dockerイメージにするのにマウントする必要がある。方法はイロイロあるみたいだけどCentOS6以上であればlibguestfs-toolsを使えば簡単にマウント出来る。
まずはインストール

# yum -y install libguestfs-tools

インストールが正常終了するとguestmountコマンドが使えるようになる。
–helpオプションで使い方を確認する事が出来る

# guestmount --help

マウントしたいイメージが/var/lib/libvirt/images/CentOS7.imgで/mntにマウントする場合は以下のコマンドとなる
ただし、パーティション分割されている場合は個別に-mオプションで指定する必要がある

# guestmount -a /var/lib/libvirt/images/CentOS7.img -i /mnt

正常にマウントが出来たら何も表示されない^^;
ls /mntとかしてマウントされているのがシステムか確認

無事マウントされている事が確認出来ればここからはDockerイメージを作成する手順となる まずは必要なデータをコピーしてtar.gzで固める

# mkdir /usr/local/src/images/
# rsync -a /mnt/* /usr/local/src/images/
# cd /usr/local/src/images/dev/

# mknod -m 666 null c 1 3
# mknod -m 666 zero c 1 5
# mknod -m 666 random c 1 8
# mknod -m 666 urandom c 1 9
# mkdir -m 755 pts
# mkdir -m 1777 shm
# mknod -m 666 tty c 5 0
# mknod -m 666 tty0 c 4 0
# mknod -m 666 tty1 c 4 1
# mknod -m 666 tty2 c 4 2
# mknod -m 666 tty3 c 4 3
# mknod -m 666 tty4 c 4 4
# mknod -m 600 console c 5 1
# mknod -m 666 full c 1 7
# mknod -m 600 initctl p
# mknod -m 666 ptmx c 5 2

tarで固める

# tar --numeric-owner -Jcpt CentOS.tar.gz -C images .

Dockerにインポートする

# cat CentOS.tar.gz | docker import - centos:1

この時、centos:1にはa-z0-9-_.しか使えませんって怒られましたw

正常にインポートされたか確認

# docker images

起動する
単純に起動するだけなら

# docker run -d --name centos centos:1 /sbin/init

とこんな感じでOKだと思うが、これだと何も出来ない、ただ起動しただけw
起動した事を確認したい場合は以下のコマンドを実行する

# docker ps 
全てのプロセスを確認するには
# docker ps -a

折角起動したのだからコンソールに繋いでみたいが、SSHは上がってないし繋がんないので以下のコマンドを実行

# docker exec -ti centos bash