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初心者なので、突っ込みどころがあったら是非教えてください。