9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

株式会社リクルートテクノロジーズAdvent Calendar 2014

Day 12

Docker registryのwebビューワTankerの紹介

Last updated at Posted at 2014-12-12

 リクルートテクノロジーズアドカレ12日目です.

 Dockerでインフラ基盤をつくりはじめると,Registryを必ず建てなければいけない時がやってくると思います.Registryを建てた暁には,registryが大量のイメージで埋め尽くされることでしょう.
Registryに登録されたイメージの一覧を見たいときはコマンドライン上で確認することがほとんどですが,JenkinsやCircle-CIのWeb画面から”あのイメージなんだったっけ…?”と思った時にはRegistryにあるイメージ一覧もWeb画面で見たくなります.

 Tankerは弊社の@nysdが作ったDocker registryのwebビューワです.goで書かれており,オリジナルのリポジトリにはnode.js版のものも用意していますが思い切って削除しました.nodeが嫌いなわけじゃないんだ,今後のメンテナンスをgo版のものにフォーカスしていくためです.

Tankerの機能

screen

 Tankerはイメージの一覧ができるほかに,次の様な機能を備えています.

  • タグやイメージ名での簡単な検索
  • イメージの削除

Tankerの実装

 Tankerはapi部分だけgo,フロントはBackbone.jsで作られています.
api部分の実装はserver.goのぺら1枚のみになっているので,negroniを使って簡単なapiを作るサンプルとして何かの参考に見ていただければと思います.

    #registry一覧からイメージを取得するapiの定義
      mux.HandleFunc("/docker/api/images", func(w http.ResponseWriter, r *http.Request) {
    		success := func(b []byte) { w.Write(b) }
    		error := func(statusCode int) { w.WriteHeader(statusCode) }
        #registryにimage一覧を取りに行ってそのまま出力
    		httpGet(fmt.Sprintf("%s/v1/images/%s/json", *dockerapi, r.URL.Query().Get("id")), success, error)
    	})

そのほか,主な構成要素は次の通りです.

動かしてみる

それでは実際にTankerを動かしてみます.

Tankerの起動

デフォルトでは3000番portでサーバが起動します.

git clone https://github.com/ainoya/tanker.git && cd tanker
go get github.com/mattn/gom # Install gom, a package manager
gom install
gom run server.go

Registryの起動

Registryを5000番ポートで動かします.

docker run -p 5000:5000 registry

このままだとRegistryに何も入っていないので,Tankerの画面は無味乾燥で見ても面白くないです.
適当なタグでRegistryにイメージをpushしてから画面を確認してみましょう.

for i in $(seq 1 9); do docker tag centos localhost:5000/centos-test:v0.$i;docker push localhost:5000/centos-test:v0.$i;done

open http://localhost:3000/docker
# イメージ名"centos-test"のタグ一覧を取得
open http://localhost:3000/docker/view/tags/library/centos-test

ご覧いただけたでしょうか?

Tankerの今後

 現在は必要と思われる最低限の機能のみしか実装していませんが,今後開発を続けていく場合には次のような機能があったら面白いなぁと考えています.

  • mesosやkubernetesとの連携
  • registryの操作UI.DockerHubなど外部ホスティングからのイメージインポート機能など.

何か思いついたらissueまでご気軽に!本日はここまで.また明日もお楽しみに!

2014/12/12追記: 書いた後に,kwk/docker-registry-frontendがあるのを知りました….機能も揃っていて使いやすそうです.

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?