Update 2014-08-10
: Dockerでデータ分析環境 - Part7: Ubuntu14.04のDockerにIPython Notebookをデプロイ
前回、botoからRiakCSで構築されているIDCFオブジェクトストレージに接続ができました。次はdocker-registryを使い、IDCFオブジェクトストレージ上にDockerイメージのリポジトリを構築してみます。Dokerを使った開発に慣れてきたので、そろろろ開発環境のコンテナを別のクラウドにデプロイしたいのですが、index.docker.ioを使わずにプライベートでできるとテストしやすいです。Packerで作ったイメージの保管先にもできると思います。
docker-registryのREADMEにS3互換のオブジェクトストレージのユースケースが書いてありますが、botoのどのAPIを使っているか確認してみます。
バケットを作成
最初にDockerイメージを保管するバケットを、IDCFオブジェクトストレージに作成します。
$ s3cmd mb s3://docker-registry |
botoの使い方
config.ymlの設定ファイルは、docker-registryコンテナを起動するときにDockerボリュームでマウントして使います。
先に完成した設定ファイルです。
common: |
IDCFオブジェクトストレージを使うときは、boto_host
の設定が必用です。
docker_registry.coreのboto.pyを見ると以下のようになっています。.boto
に記述してもみてくれないようです。
def _build_connection_params(self): |
docker-registryコンテナの起動
docker-registryコンテナは、IDCFオブジェクトストレージのゲートウエイとして機能します。
-eオプションで渡す環境変数は、REGISTRY_SECRETには、base64エンコードされた文字列を設定します。
AWS_S3_ACCESS_KEYとAWS_S3_SECRET_KEYには、それぞれコントロールパネルで確認した値を使います。
REGISTRY_SECRET用にランダムを作成するため、ホームディレクトリの.rnd
を削除します。
$ sudo rm ~/.rnd |
docker run
で、registry
イメージを使い起動します。
$ docker run -p 5000:5000 -v /home/masato/registry_conf:/registry_conf -e DOCKER_REGISTRY_CONFIG=/registry_conf/config.yml -e AWS_S3_ACCESS_KEY="確認したAccess Key" -e AWS_S3_SECRET_KEY="確認したSecret Key" -e REGISTRY_SECRET=`openssl rand -base64 64 | tr -d '\n'` registry |
localhost:5000へポートフォワードしているので、Dockerホストからcurlで確認します。
$ curl localhost:5000 |
PUSHとPULL
ローカルに保存しているイメージにタグをつけます。書式は以下です。
docker tag IMAGE REPOSITORY[:TAG] |
docker tag
でubuntuイメージいにリポジトリ名とタグを付けます。
$ docker tag ubuntu localhost:5000/ubuntu |
docker push
でIDCFオブジェクトストレージのリポジトリにpushします。
$ docker push localhost:5000/ubuntu |
s3cmdを使い、IDCFオブジェクトストレージに保管されていることを確認します。
$ s3cmd ls s3://docker-registry/images/repositories/library/ubuntu/ |
docker pull
とdocker run
でイメージの起動を確認してみます。
$ docker pull localhost:5000/ubuntu |
まとめ
IDCFオブジェクトストレージでも簡単にDockerリポジトリを作ることができました。
Packerでどんどんイメージを作りながら、GCEのCoreOSやHerokuにデプロイするのが目標です。
docker-registryは、Pythonで作られている、Gevent,Gunicorn,Flaskで動くWSGIアプリです。
おもしろそうなのでソースコードも読んでいきたいと思います。Bugsnagというエラー監視サービスも初めて知りました。あたらしいツールをつかっていると、いろいろ勉強になることが多いです。