docker registry入門 第五回コンテナ型仮想化の情報交換会

27
Copyright©2014 NTT corp. All Rights Reserved. Docker Registry入門 2014/11/14 第五回コンテナ型仮想化の情報交換会 @spice_sisters

Upload: kengo-okitsu

Post on 07-Jul-2015

2.799 views

Category:

Engineering


0 download

DESCRIPTION

11/14に大阪で開催された第五回コンテナ型仮想化の情報交換会で発表した、「Docker Registry入門」の資料です。 当日ミラーリングについて補足すべきことを言い忘れていたので、スライドに追記しました。

TRANSCRIPT

Page 1: Docker registry入門 第五回コンテナ型仮想化の情報交換会

Copyright©2014 NTT corp. All Rights Reserved.

Docker Registry入門

2014/11/14第五回コンテナ型仮想化の情報交換会@spice_sisters

Page 2: Docker registry入門 第五回コンテナ型仮想化の情報交換会

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

Page 3: Docker registry入門 第五回コンテナ型仮想化の情報交換会

3Copyright©2014 NTT corp. All Rights Reserved.

Docker Registryとは

Page 4: Docker registry入門 第五回コンテナ型仮想化の情報交換会

4Copyright©2014 NTT corp. All Rights Reserved.

• Dockerイメージを共有するためのサービス

• https://hub.docker.com/

• 有名所のイメージはオフィシャルイメージがある

• Githubと連携したイメージのAutomated Buildや、CIのためのWebhookが使える

前提知識〜DockerHub〜

Page 5: Docker registry入門 第五回コンテナ型仮想化の情報交換会

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

イメージの情報

イメージやり取り

認証情報

Page 6: Docker registry入門 第五回コンテナ型仮想化の情報交換会

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概要

Page 7: Docker registry入門 第五回コンテナ型仮想化の情報交換会

7Copyright©2014 NTT corp. All Rights Reserved.

Docker Registryを立ち上げる

Page 8: Docker registry入門 第五回コンテナ型仮想化の情報交換会

8Copyright©2014 NTT corp. All Rights Reserved.

• オフィシャルイメージで提供

立ちあげ方

# docker run -d -p 5000:5000 registry

Page 9: Docker 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

立ちあげ方

Page 10: Docker registry入門 第五回コンテナ型仮想化の情報交換会

10Copyright©2014 NTT corp. All Rights Reserved.

Page 11: Docker registry入門 第五回コンテナ型仮想化の情報交換会

11Copyright©2014 NTT corp. All Rights Reserved.

• 認証

• Standaloneか否か(Indexと認証情報のやり取りをするか)

• Indexのエンドポイント

• ストレージバックエンド

• Filesystem

• S3, GCS

• Swift, Glance

• 検索エンジンバックエンド(イメージ検索API用)

• sqlalchemy(pythonのORMライブラリ)

• ミラーリング(transparent mirror用)

• キャッシュ

configで指定できる項目(抜粋)

Page 12: Docker registry入門 第五回コンテナ型仮想化の情報交換会

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

Page 13: Docker registry入門 第五回コンテナ型仮想化の情報交換会

13Copyright©2014 NTT corp. All Rights Reserved.

https://github.com/docker/docker-registry/blob/master/config/config_sample.yml

Page 14: Docker registry入門 第五回コンテナ型仮想化の情報交換会

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

Page 15: Docker 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

Page 16: Docker registry入門 第五回コンテナ型仮想化の情報交換会

16Copyright©2014 NTT corp. All Rights Reserved.

Docker Registryを使う

Page 17: 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

Page 18: Docker registry入門 第五回コンテナ型仮想化の情報交換会

18Copyright©2014 NTT corp. All Rights Reserved.

• コンテナ名にURLを埋め込んでpull

イメージのpush, pull

# docker pull myregistry.com:5000/node

Page 19: Docker registry入門 第五回コンテナ型仮想化の情報交換会

19Copyright©2014 NTT corp. All Rights Reserved.

Docker Registry API

https://docs.docker.com/reference/api/registry_api/

イメージの検索

Page 20: Docker registry入門 第五回コンテナ型仮想化の情報交換会

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..."}

]

}

Page 21: Docker registry入門 第五回コンテナ型仮想化の情報交換会

21Copyright©2014 NTT corp. All Rights Reserved.

• いちいちAPIをたたくのが面倒な場合、Docker HubにあるWeb UIコンテナを使うとよい

• docker-registry-ui, docker-registry-webで検索すると出てくる

• 例:atcol/docker-registry-ui

Web UI

Page 22: Docker registry入門 第五回コンテナ型仮想化の情報交換会

22Copyright©2014 NTT corp. All Rights Reserved.

atcol/docker-registry-ui

Page 23: Docker registry入門 第五回コンテナ型仮想化の情報交換会

23Copyright©2014 NTT corp. All Rights Reserved.

Page 24: Docker registry入門 第五回コンテナ型仮想化の情報交換会

24Copyright©2014 NTT corp. All Rights Reserved.

Docker Registryをより便利に使う

Page 25: 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

Page 26: Docker 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もエラーを吐いてうまくいってません●後日原因が判明したら、どこかに続報を書きたいと思います。

Page 27: Docker registry入門 第五回コンテナ型仮想化の情報交換会

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

参考資料