Dockerにはimageを登録しておくためのregistryが用意されていて、https://index.docker.io/ にPublicなイメージを登録しておくことが出来ます。また、社内用など、Publicには出したくない時も自分でregistryを立てることが出来ます。そこで、今回は社内用Docker Registryの立て方について書こうと思います。
https://github.com/dotcloud/docker-registry を参考にします。
Docker Registryを立ち上げる
立てるのはすごく簡単で、docker runするだけでした。
$ docker run -p 5000:5000 -d stackbrew/registry
これで実行したhostの5000番portにDocker Registryを立てることができます。
ここに対して、pushやpullをしたい場合は、host名を含めたtagを付ける必要があります。例えばこのhostの名前が private-docker-registry.com だったとすると
$ docker build -t private-docker-registry.com:5000/sample-app . $ docker push private-docker-registry.com:5000/sample-app
のようにします。簡単ですね。
データのディレクトリをマウントする
ただ、このままではDockerコンテナをstopしたらデータが消えてしまいます。そこでhostのディレクトリを、Docker Registryのデータディレクトリにmountして、データを永続化できるようにします。
これも立ちあげ方を変えるだけです。これでDockerを立ちあげているhostの/var/registryが、Dockerコンテナ内の/tmp/registryにmountされ、Dockerコンテナがstopしても/var/registryに残り続けてくれます。
docker run -d -p 5000:5000 -v /var/registry:/tmp/registry stackbrew/registry
その他の立ちあげ方
https://github.com/dotcloud/docker-registry を見ると分かる通り、config.ymlをうまくいじることによって、S3にデータを保存するなどの事もできるようです。
まとめ
今回は簡単なDocker Registryの立て方について書きました。とりあえず試すくらいならこの程度で十分だと思います。