Post on 07-Jul-2015
description
Copyright©2014 NTT corp. All Rights Reserved.
Docker Registry入門
2014/11/14第五回コンテナ型仮想化の情報交換会@spice_sisters
2Copyright©2014 NTT corp. All Rights Reserved.
•Docker Registryとは
•Docker Registryを立ち上げる
•Docker Registryを使う
•Docker Registryをより便利に使う
目次
●試した環境・Docker 1.3.0・Docker Registry 0.8.1・CentOS 7.0・ESXi5.5
3Copyright©2014 NTT corp. All Rights Reserved.
Docker Registryとは
4Copyright©2014 NTT corp. All Rights Reserved.
• Dockerイメージを共有するためのサービス
• https://hub.docker.com/
• 有名所のイメージはオフィシャルイメージがある
• Githubと連携したイメージのAutomated Buildや、CIのためのWebhookが使える
前提知識〜DockerHub〜
5Copyright©2014 NTT corp. All Rights Reserved.
• Dockerイメージを格納するためのストレージコンポーネント
• イメージとレイヤー情報などを格納
• ストレージコンポーネントなので、ユーザ認証やWeb UIなどは別
Docker Registryの役割
https://docs.docker.com/reference/api/hub_registry_spec/ を改変
・認証やWebUIはここ
・OSSはない
・ここがOSSで、プライベート環境に立てられる
Index Registry
Storage
イメージの情報
イメージやり取り
認証情報
6Copyright©2014 NTT corp. All Rights Reserved.
• OSSのpythonアプリ
• https://github.com/docker/docker-registry
• 最新の安定バージョン:0.8.1->0.9.0
• 今回試したのは0.8.1です!
• オフィシャルイメージ(registry)として提供
• 使い所(個人的見解)
• 限られたメンバーでイメージを共有したい場合
• よくDLされるオフィシャルイメージをローカルに置いておきたい場合(ミラーリング)
などなど
Docker Registry概要
7Copyright©2014 NTT corp. All Rights Reserved.
Docker Registryを立ち上げる
8Copyright©2014 NTT corp. All Rights Reserved.
• オフィシャルイメージで提供
立ちあげ方
# docker run -d -p 5000:5000 registry
9Copyright©2014 NTT corp. All Rights Reserved.
• pipでもインストール可能
• docker-registry/ADVANCED.md
• Dockerfile
• https://github.com/docker/docker-registry/blob/0.8.1/Dockerfile
立ちあげ方
10Copyright©2014 NTT corp. All Rights Reserved.
11Copyright©2014 NTT corp. All Rights Reserved.
• 認証
• Standaloneか否か(Indexと認証情報のやり取りをするか)
• Indexのエンドポイント
• ストレージバックエンド
• Filesystem
• S3, GCS
• Swift, Glance
• 検索エンジンバックエンド(イメージ検索API用)
• sqlalchemy(pythonのORMライブラリ)
• ミラーリング(transparent mirror用)
• キャッシュ
configで指定できる項目(抜粋)
12Copyright©2014 NTT corp. All Rights Reserved.
• runだけすると、config_sample.ymlに記述されてるデフォルト設定が指定される• https://github.com/docker/docker-
registry/blob/master/config/config_sample.yml
• コンテナ内の /docker-registry/config/config_sample.yml
• run時の環境変数オプション(-e)で個別に指定/上書きすることができる
• 環境変数名はconfig_sample.ymlを参照
configの指定方法
# docker run ¥
-e SEARCH_BACKEND=sqlalchemy ¥
-e LOGLEVEL=info ¥
-p 5000:5000 ¥
registry
13Copyright©2014 NTT corp. All Rights Reserved.
https://github.com/docker/docker-registry/blob/master/config/config_sample.yml
14Copyright©2014 NTT corp. All Rights Reserved.
• configのテンプレートをflavorと呼ぶ
• flavor単位で指定することもできる
• config_sample.ymlにもいくつかflavorが定義されている
• デフォルトで立ち上がってくるのはこのファイルで定義されている”dev” flavor
flavorでの指定
# docker run ¥
-e SETTINGS_FLAVOR=common ¥
-p 5000:5000 registry
15Copyright©2014 NTT corp. All Rights Reserved.
• 独自コンフィグを書いて指定もできる
• RegistryのDockerfileを編集して独自イメージをビルドするのもよい
独自コンフィグ、Dockerfile
# docker run ¥
-v /home/me/myfolder:/registry-conf ¥
-e DOCKER_REGISTRY_CONFIG=/registry-conf/mysuperconfig.yml ¥
-p 5000:5000 registry
16Copyright©2014 NTT corp. All Rights Reserved.
Docker Registryを使う
17Copyright©2014 NTT corp. All Rights Reserved.
• コンテナ名にURLを埋め込んでpush
イメージのpush, pull
# docker pull node
# docker tag node myregistry.com:5000/node
# docker push myregistry.com:5000/node
18Copyright©2014 NTT corp. All Rights Reserved.
• コンテナ名にURLを埋め込んでpull
イメージのpush, pull
# docker pull myregistry.com:5000/node
19Copyright©2014 NTT corp. All Rights Reserved.
Docker Registry API
https://docs.docker.com/reference/api/registry_api/
イメージの検索
20Copyright©2014 NTT corp. All Rights Reserved.
• Web APIで取得できる
イメージ一覧取得
# curl -X GET http://myregistry.com:5000/v1/search?q=search_term
HTTP/1.1 200 OK
Vary: Accept
Content-Type: application/json
{"query":"search_term",
"num_results": 3,
"results" : [
{"name": "ubuntu", "description": "An ubuntu image..."},
{"name": "centos", "description": "A centos image..."},
{"name": "fedora", "description": "A fedora image..."}
]
}
21Copyright©2014 NTT corp. All Rights Reserved.
• いちいちAPIをたたくのが面倒な場合、Docker HubにあるWeb UIコンテナを使うとよい
• docker-registry-ui, docker-registry-webで検索すると出てくる
• 例:atcol/docker-registry-ui
Web UI
22Copyright©2014 NTT corp. All Rights Reserved.
atcol/docker-registry-ui
23Copyright©2014 NTT corp. All Rights Reserved.
24Copyright©2014 NTT corp. All Rights Reserved.
Docker Registryをより便利に使う
25Copyright©2014 NTT corp. All Rights Reserved.
• いちいちコンテナ名にURLを埋め込むのめんどくさい→ ミラーリングオプションで解決!
• docker clientを立ち上げる時に、ミラーRegistryを指定するオプション --registry-mirror
• Docker Registryを立ち上げる時にミラーソースを指定
ミラーリング
# docker --registry-mirror=http://myregistry.com:5000 -d
# docker run -p 5000:5000 ¥-e STANDALONE=false ¥-e MIRROR_SOURCE=https://registry-1.docker.io ¥-e MIRROR_SOURCE_INDEX=https://index.docker.io registry
26Copyright©2014 NTT corp. All Rights Reserved.
• pullをすると、Mirror Registryにデータが保存される→ 次のpullからはMirrorから取得!
(一部常にIndexに聞きにいくデータ有)
ミラーリング
metadatalayersimage ancestory
registry-1.docker.io
PrivateRegistry
(11/15追記)●ミラーリングはまだ手元で試して成功していません●オフィシャルイメージをpullしようとすると、--registry-mirrorを無視する挙動になっていたり、非オフィシャルイメージのpullもエラーを吐いてうまくいってません●後日原因が判明したら、どこかに続報を書きたいと思います。
27Copyright©2014 NTT corp. All Rights Reserved.
• Docker HubとRegistryとの関係
• Docker Hub and Registry Spec - Docker Documentation
• https://docs.docker.com/reference/api/hub_registry_spec/
• --registry-mirror の解説
• docker/registry_mirror.md at master · docker/docker · GitHub
• https://github.com/docker/docker/blob/master/docs/sources/articles/registry_mirror.md
• ミラーリングの方法、キャッシュの設定方法など
• Docker Advanced registry usage
• http://www.slideshare.net/Docker/https-dldropboxusercontentcomu20637798docker-meetup-freiburg
参考資料