Amazon Linux AMI の Docker Base Image を作ってみた

Amazon Linux AMI 2014.03 出ました! Dockerが標準レポジトリに入ったことですし、せっかくなのでAmazon Linux AMIのbaseイメージを作ってみた。

準備

アップロードの時にネットワーク的に近くて良さそうなので、us-east-1リージョンで作業を行います。
AMI は amzn-ami-minimal-pv-2014.03.0.x86_64-ebs (ami-5573643c) を使います。
Management ConsoleでもAWS CLIでもよいですが、blockdevice mappingの指定が楽なので旧API Toolsで起動。

$ ec2-run-instances --region us-east-1 -k KEYPAIR -g GROUP -b /dev/sdf=snap-bb9e9f63:10:true ami-5573643c

インスタンスにログインしてrootになったら、dockerをインストールし、サービスを起動します。

$ sudo su -
# yum -y install docker
# service docker start

ベースイメージインポート

plainなroot volumeをmountして、レポジトリ定義ファイルをコピーしてから、インポートします。

# mount /dev/sdf /mnt
# cd /mnt
# cp /etc/yum.repos.d/amzn-* etc/yum.repos.d/
# tar --numeric-owner -cjp . | docker import - local/amzn:2014.03
# docker run -i -t local/amzn:2014.03 echo test
test

イメージ登録

イメージを他のマシンでも使うために、docker indexに登録します。

docker indexアカウント作成

docker indexにアクセスし、右上のSignupからアカウントを作成します。

作業用インスタンスでdockerにログイン
# docker login
Username: j3tm0t0
Password:
Email: j3tm○t○@gmail.c○m
Login Succeeded
コミットして登録する
# docker ps -a
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS               NAMES
72423a499c57        local/amzn:2014.03   echo test           22 minutes ago      Exit 0                                  berserk_newton
# docker commit 72423a499c57 j3tm0t0/amzn
7343feb234417d256d0ebe3d3fec4645567d9dc95815445dbba1179d5141e326
# docker push j3tm0t0/amzn
The push refers to a repository [j3tm0t0/amzn] (len: 1)
Sending image list
Pushing repository j3tm0t0/amzn (1 tags)
eb378e40d762: Image successfully pushed
7343feb23441: Image successfully pushed
Pushing tag for rev [7343feb23441] on {https://registry-1.docker.io/v1/repositories/j3tm0t0/amzn/tags/latest}

他のホストから起動してみる

# docker run -i -t j3tm0t0/amzn /bin/bash
Unable to find image 'j3tm0t0/amzn' locally
Pulling repository j3tm0t0/amzn
7343feb23441: Download complete
eb378e40d762: Download complete
bash-4.1# uname -a
Linux 95dcd2eda7dd 3.10.34-37.137.amzn1.x86_64 #1 SMP Tue Mar 25 01:00:47 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

とりあえず動いたようです。これを元に色々試してみようと思います。

まとめ

Docker初心者なので、突っ込みどころがあったら是非教えてください。