orenoblog

エンジニアになりたいExcel方眼紙erの物語

boot2docker + Amazon S3でdocker private registry そして...

DockerのプライベートレジストリのバックエンドをS3で実現されている「docker-registry と Amazon S3 で作る自分だけのコンテナ倉庫(リポジトリ) - ようへいの日々精進」を参考に

boot2dockerで稼働しているDockerでもレジストリのフロントエンドを稼働させることができたので、

ローカル(boot2docker docker) -> S3へのPush/Pullができるようになりました。

サーバ節約!

インターネット上のさーばにDockerコンテナをpullする時は別途Docker registryが必要になるのですが・・・

  • Registry用Dockerコンテナ起動
orenomac$ docker run -d -p 49500:5000 -e SETTINGS_FLAVOR=prod docker-s3/registry
 /docker-registry/run.sh                                                        dd1e9b3a0539d618d5454e86bc0f4591569c105702fc92ba4b05f70e7d844540
orenomac$ docker ps
CONTAINER ID        IMAGE                       COMMAND                CREATED
           STATUS              PORTS                     NAMES
dd1e9b3a0539        docker-s3/registry:latest   /docker-registry/run   1 seconds
 ago       Up 2 seconds        0.0.0.0:49500->5000/tcp   stupefied_ritchie
  • 僕僕Registryに登録
orenomac$ docker tag centos/webserver localhost:49500/centos-webserver
orenomac$ docker push localhost:49500/centos-webserver
The push refers to a repository [localhost:49500/centos-webserver] (len: 1)
Sending image list
Pushing repository localhost:49500/centos-webserver (1 tags)
539c0211cd76: Image successfully pushed
244e53897526: Image successfully pushed
11cee5f445aa: Image successfully pushed
ee8a750c7eb9: Image successfully pushed
cf42203ce8a3: Image successfully pushed
ef938d1b58aa: Image successfully pushed
e522db37eeb8: Image successfully pushed
bd3f354c0eaf: Image successfully pushed
8c0dec6a99ac: Image successfully pushed
567cadb0a3a4: Image successfully pushed
ce84df388d67: Image successfully pushed
Pushing tag for rev [ce84df388d67] on {http://localhost:49500/v1/repositories/centos-webserver/tags/latest}
  • 僕僕Registryからpull
orenomac$ docker pull localhost:49500/centos-webserver
Pulling repository localhost:49500/centos-webserver
ce84df388d67: Download complete
539c0211cd76: Download complete
244e53897526: Download complete
11cee5f445aa: Download complete
ee8a750c7eb9: Download complete cf42203ce8a3: Download complete
ef938d1b58aa: Download complete
e522db37eeb8: Download complete
bd3f354c0eaf: Download complete
8c0dec6a99ac: Download complete
567cadb0a3a4: Download complete

さてここから

Amazon CloudFrontでpullを高速化できるかな?

CloudFrontでDockerのレジストリに登録したデータを配信してみましょう。

EC2(c3.large)にCentOS6.5を稼働させてS3をバックエンドとするDockerレジストリを準備しました。

  • オリジンサーバからのpull(2:08.22)
orenomac$ time docker pull <origin>/centos-webserver
Pulling repository <origin>/centos-webserver
ce84df388d67: Download complete 539c0211cd76: Download complete
244e53897526: Download complete
11cee5f445aa: Download complete
ee8a750c7eb9: Download complete
cf42203ce8a3: Download complete
ef938d1b58aa: Download complete
e522db37eeb8: Download complete
bd3f354c0eaf: Download complete
8c0dec6a99ac: Download complete
567cadb0a3a4: Download complete
docker pull <origin>/centos-webserver  0.06s user 0.05s system 0% cpu 2:08.22 total

オリジンサーバからのダウンロードはOKです。

CloudFrontドメインを指定するとCDN経由でpullできるはず・・・

Docker Registry <-> CloudFront -> PC

  • 1回目(2:21.89)
orenomac$ time docker pull d285hgqainxm96.cloudfront.net:80/centos-webserver
Pulling repository d285hgqainxm96.cloudfront.net:80/centos-webserver
ce84df388d67: Download complete
539c0211cd76: Download complete 244e53897526: Download complete
11cee5f445aa: Download complete
ee8a750c7eb9: Download complete
cf42203ce8a3: Download complete
ef938d1b58aa: Download complete
e522db37eeb8: Download complete
bd3f354c0eaf: Download complete
8c0dec6a99ac: Download complete
567cadb0a3a4: Download complete
docker pull d285hgqainxm96.cloudfront.net:80/centos-webserver  0.06s user 0.06s system 0% cpu 2:21.89 total
  • 2回目(2:04.55)

アンタグしてから再度pullします

orenomac$ docker rmi d285hgqainxm96.cloudfront.net:80/centos-webserver
Untagged: d285hgqainxm96.cloudfront.net:80/centos-webserver:latest
Deleted: ce84df388d674cc068150ddcd59f74f3a594320296a94f6e338130282f15e25f
Deleted: 567cadb0a3a44596115afc8e7efeb67e9c7f85a21b6b404777c82c05ec68080a
Deleted: 8c0dec6a99acf3e937dc349c3a56f60077aec38683d15107801fda88e68683ae
Deleted: bd3f354c0eaf6abf2edf2ed6c6e3b6bb944a3ced182d73d2816e2fbe88699bfa
Deleted: e522db37eeb8800f5822486a73bec23f2f9dfdd1e135d48d376e5c43975bc2e5
Deleted: ef938d1b58aa86242c6aa9c6ed641fa352617a351e815eb9e55d4679fecba39d
orenomac$ time docker pull d285hgqainxm96.cloudfront.net:80/centos-webserver
Pulling repository d285hgqainxm96.cloudfront.net:80/centos-webserver
ce84df388d67: Download complete 539c0211cd76: Download complete
244e53897526: Download complete
11cee5f445aa: Download complete
ee8a750c7eb9: Download complete
cf42203ce8a3: Download complete
ef938d1b58aa: Download complete
e522db37eeb8: Download complete
bd3f354c0eaf: Download complete
8c0dec6a99ac: Download complete
567cadb0a3a4: Download complete
docker pull d285hgqainxm96.cloudfront.net:80/centos-webserver  0.06s user 0.04s system 0% cpu 2:04.55 total
  • 3回目(2:30.81)

もちろんアン(ry

orenomac$ time docker pull d285hgqainxm96.cloudfront.net:80/centos-webserver
Pulling repository d285hgqainxm96.cloudfront.net:80/centos-webserver
ce84df388d67: Download complete
539c0211cd76: Download complete
244e53897526: Download complete 11cee5f445aa: Download complete
ee8a750c7eb9: Download complete
cf42203ce8a3: Download complete
ef938d1b58aa: Download complete
e522db37eeb8: Download complete
bd3f354c0eaf: Download complete
8c0dec6a99ac: Download complete
567cadb0a3a4: Download complete
docker pull d285hgqainxm96.cloudfront.net:80/centos-webserver  0.06s user 0.05s system 0% cpu 2:30.81 total

・・・

あかんテストの仕方悪い気がする。

  • Cloud Frontから取得出来てるっぽいけどキャッシュしてなくね
  • docker registryのアプリケーションログ見てないですすいませんすいません
  • ぼく宅の回線がm9(^Д^)プギャーの可能性
  • Private Distributionパターンと組み合わせたら爆速プライベートpullできるんじゃねーの?って思ったんだけど
  • CloudFrontのDomain Nameを指定してpullすることでコンテナデプロイ先のEC2がリージョン跨いでてもpull早くなるのかなって思ったんだけど

一旦やり方など考えなおそう。なんとなくやってみたんだけどうまくいかないというか突貫すぎた。

そもそもこれを試したいわけじゃなかったんだー。AWSのサービスは誘惑が多い。

  • その他

EC2上でDockerレジストリのフロントエンドを起動するために初めてIAM Roleを使いました。ありがとうIAM Role

感謝。