docker用にCentOS 6.5のbase imageを自作する

[Public docker images · dotcloud/docker Wiki](https://github.com/dotcloud/docker/wiki/Public-docker-images#centos-64-base-image)にdockerオフィシャルなCentOS 6.4のbase imageがあります。

でもCentOS 6.5のbase imageが欲しいし、適宜カスタマイズしたbase imageを自作したいところです。

[Create a Base Image - Docker Documentation](http://docs.docker.io/en/latest/use/baseimages/)に作り方の説明があり、CentOS用のスクリプト[docker/contrib/mkimage-rinse.sh at master · dotcloud/docker](https://github.com/dotcloud/docker/blob/master/contrib/mkimage-rinse.sh)もあります。

また、[Building a RHEL/CentOS Docker base image – devops and security](http://failshell.io/docker/building-a-centos-docker-base-image/)、[Dockerで自分専用のDebianイメージを作る - ただのにっき(2013-12-13)](http://sho.tdiary.net/20131213.html)、Ubuntuなら[dockerのカスタムベースイメージを作成する - @znz blog](http://blog.n-z.jp/blog/2013-12-13-docker-custom-base-image.html)という記事も見つけました。

さらに探すと、[Official CentOS base image · Issue #290 · dotcloud/docker](https://github.com/dotcloud/docker/issues/290#issuecomment-15738849)にdockerオフィシャルなCentOS 6.4 base imageを作成したスクリプトが載っていました。こちらのほうがシンプルなのでこれを使うことにします。

CentOSのミラーのURLをftp.riken.jpに変更しCentOS 6.5用に編集して、保存します。ここではcent65.shという名前にしました。

```
#!/bin/bash

MIRROR_URL="http://ftp.riken.jp/Linux/centos/6.5/os/x86_64/"
MIRROR_URL_UPDATES="http://ftp.riken.jp/Linux/centos/6.5/updates/x86_64/"

yum install -y febootstrap xz

febootstrap -i bash -i coreutils -i tar -i bzip2 -i gzip -i vim-minimal -i wget -i patch -i diffutils -i iproute -i yum centos centos65  $MIRROR_URL -u $MIRROR_URL_UPDATES
touch centos65/etc/resolv.conf
touch centos65/sbin/init

tar --numeric-owner -Jcpf centos-65.tar.xz -C centos65 .
```

CentOS 6.5上で上記のスクリプトを実行します。

```shell-session
$ ./cent65.sh
```

作成したbase imageを登録するには以下のコマンドを実行します。

```shell-session
$ cat centos-65.tar.xz | sudo docker import - local/centos:6.5
```

試しに以下のようにechoコマンドを実行すると問題なく実行できました。

```shell-session
$ docker run local/centos:6.5 echo 'hello world'
```

# docker indexに自作したbase imageを登録

他のマシンでも使いたいので、 https://index.docker.io/ に登録します。[仮想環境構築に docker を使う - apatheia.info](http://apatheia.info/blog/2013/06/17/docker/)に説明があります。公式ドキュメントだと[Share Images via Repositories - Docker Documentation](http://docs.docker.io/en/latest/use/workingwithrepository/#contributing-to-the-central-registry)のあたりです。

## docker indexにsignupしてアカウント作成

ブラウザで https://index.docker.io/ を開き、右上のsignupのリンクをクリックしてフォームに必要事項を入力して[sign up]ボタンを押します。登録確認のメールが届くのでメール内のリンクをクリックして登録を完了します。

## base imageを登録

[仮想環境構築に docker を使う - apatheia.info](http://apatheia.info/blog/2013/06/17/docker/)の[詳細](http://apatheia.info/blog/2013/06/17/docker/#section-2)の手順で登録します。

```shell-session
$ docker ps -a -notrunc
```

でcommitしたいイメージのIDを調べます。

```shell-session
$ docker commit -author="Hiroaki Nakamura <hnakamur@gmail.com>" -m="CentOS 6.5 x86_64 minimal" b7f2422dc993801dbda0b566a5dd515aa7af0d792f9159c56f16c6035492d1c4 hnakamur/centos:6.5
```

のようにしてcommitします (イメージのIDは適宜変更してください)。

あとは

```shell-session
sudo docker push hnakamur/centos
```

とpushします。

[Search | Docker Index](https://index.docker.io/)でhnakamurで検索してみると[hnakamur: Search Results | Docker Index](https://index.docker.io/search?q=hnakamur)という結果になり、[hnakamur/centos Repository | Docker Index](https://index.docker.io/u/hnakamur/centos/)で詳細ページが見られます。