docker hubにboxを登録する
2016-08-05
docker hub
最近名前をよく聞くようになったdocker。Docker hubは、dockerで使うimageをクラウド上に置いておくことができる場所だ。ざっくり説明すると、
- 自分が作ったimageを世界に公開することもできるし、プライベートなimageも置くことができる。
- 2016-08-05現在、無料のプランだと、プライベートなimageは1つまで。並列処理でビルドできるimageは1つだけ。
といった感じである。
今回、werckerの処理を高速化するためにdockerにimageを登録してみたので、その手順を書いておく。なお、下記はgithubを使う場合で説明している。Bitbucketでも手順はほぼ同じと思われる。
docker hubを使うまでの手順
この段階では下記の点を除いてあまりハマらなかったので詳細は書かないが、下記のようにする。
- Docker または Docker hubでアカウントを登録する。
- どちらで登録しても、アカウントは共通。
- Docker hubにログインする。
- Docker hubとgithubのアカウントをリンクする。アカウントのSettingメニューでLinked Accounts & Servicesタブを選択すると、リンクのボタンがある。
注意点
おそらく、いくらかの人はこの時点でgithubのアカウント名と同じアカウント名でDocker IDを取得できないと思われる。後でも説明するが、imageの名前を指定する際は、dockerのID/imageの名前(=Docker hub上のレポジトリ名)
の様になる。githubのID
ではないし、githubのレポジトリ名
でもない点に注意。
githubのID/githubのレポジトリ名
にしがちだが、そんなimageは無いとエラーになり盛大にハマった。
docker hubにimageを登録する
手順としては大きく下記である。
- github上にDockerfileを置いたレポジトリを作成する。
- Docker hub上でもレポジトリを用意し、上記のレポジトリから自動でimageを作成するように設定する。
githubにDockerfileを置いたレポジトリを作成
具体的には下記を参照。(HugoのSyntax hightlightでsolarized color schemeを使うためのboxを作ってみた)
Dockerfile
FROM python:2.7.12
MAINTAINER mm-git
RUN apt-get update -y
RUN apt-get upgrade -y
RUN pip install pygments pygments-style-solarized
- Dockerfileは
D
だけ大文字。- ローカル環境で
docker build -t test .
の様にしてテストしたところ、dockerfileだとファイルが無いと怒られた。
- ローカル環境で
- FROMではベースとなる既存のimage名(とバージョン)を指定する。
- Official base imageの一覧はここにある。 Explore Official Repositories
- Officialのimageは
DockerのID
は無しで、imageの名前
(およびバージョン)のみを指定する。
- Officialのimageは
- 右上の検索ボックスで誰かが作った公開されているimageを検索できる。
- Publicなのimageは
DockerのID/imageの名前
(およびバージョン)を指定する。 - 検索できるものの、ある程度名前がわかっていないとhitしないかもしれない。
- Publicなのimageは
Docker hub上でもレポジトリを作成
下記参照。
github ID: mm-git, Docker ID:mmgitの様に、微妙に異なる。全く違う人もたくさんいる。
- レポジトリを作成
- Docker hubに初めてログインしたあと、ダッシュボードにレポジトリを作成するボタンがあるが、githubと連携させるボタンは無い様である(2016-08-05現在)。画面の右上のCreateメニューにはCreate Automated buildがあるので、それを選択する。
- githubのレポジトリを選択する画面で対象となるレポジトリを選択する。
- 次の画面ではそのままCreate。
これで、git push
するたびにimageが更新されるはずである。手動でビルドする場合は、Build SetingタブにTriggerボタンがあるので、押すとビルドされる。
作成したPublic imageを使う
上記の例だと、作成してイメージはmmgit/hugo-box
という名前で指定できる。
docker pull mmgit/hugo-box
として使う- DockerfileのFROMに
mmgit/hugo-box
と書いて更に拡張 - werckerの場合は、wercker.ymlに
box: mmgit/hugo-box
の様に書く。- werckerはもっともっと盛大にハマったので後日記事にする予定。