イメージをDocker Hubに保管¶
これまではローカル・ホスト上の Docker を、コマンドラインで操作する方法を学びました。 イメージを取得 し、既存のイメージからコンテナを構築する方法と、 自分自身でイメージを作成する 方法を学びました。
次は Docker Hub を簡単に使う方法を学び、Docker のワークフローを拡張しましょう。
Docker Hub は Docker 社が管理する公開(パブリックな)レジストリです。ここには、ダウンロードしてコンテナ構築に使えるイメージが置かれています。また、自動化や、ワークグループの仕組み、ウェブフック(webhook)や構築トリガ(build trigger)のようなワークフロー・ツール、一般には共有したくないイメージを保管するプライベート・リポジトリのようなプライバシー・ツールを提供します。
Docker コマンドと Docker Hub¶
Docker Hub が提供するサービスには、 Docker 自身が docker search
、 pull
、 login
、 push
コマンドを通して接続する機能があります。ここではコマンドの働きを見ていきましょう。
アカウントの作成とログイン¶
例によって、Docker Hub を使い始めるには(未作成であれば)アカウントを作成し、ログインします。アカウントの作成は Docker Hub 上で 行えます。
$ docker login
これでコミットしたイメージを、自分の Docker Hub リポジトリ上に、アップロード(push)できます。
注釈
自分の認証に関する情報は、自分のホームディレクトリの /.docker/config.json
に保管されます。
イメージの検索¶
(ブラウザの)検索インターフェースかコマンドライン・インターフェースを通して、 Docker Hub レジストリを検索できます。イメージの検索は、イメージ名、ユーザ名、説明文に対して可能です。
$ docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS 1223 [OK]
tianon/centos CentOS 5 and 6, created using rinse instea... 33
...
ここでは centos
と tianon/centos
という、2つの結果が表示されました。後者は tianon
という名前のユーザによる公開リポジトリです。1つめの結果 centos
とは明確に異なるリポジトリです。1つめの centos
は、 公式リポジトリ としての信頼されるべきトップ・レベルの名前空間です。文字列 /
により、イメージ名とユーザのリポジトリ名を区別します。
欲しいイメージが見つかれば、 docker pull <イメージ名>
によってダウンロードできます。
$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
f1b10cd84249: Pull complete
c852f6d61e65: Pull complete
7322fbe74aa5: Pull complete
Digest: sha256:90305c9112250c7e3746425477f1c4ef112b03b4abe78c612e092037bfecc3b7
Status: Downloaded newer image for centos:latest
これで、この入手したイメージをから、コンテナを実行可能です。
バージョンの指定と最新版¶
docker pull centos
の実行は、docker pull centos:latest
の実行と同等です。イメージを取得するにあたり、標準の最新(latest)イメージをダウンロードするのではなく、より適切なイメージを正確に指定可能です。
例えば、 centos
のバージョン 5 を取得するには、docker pull centos:centos5
を使います。この例では、 centos
リポジトリにおける centos
のバージョンを、タグ centos5
でラベル付けしたイメージを指定しています。
リポジトリにおいて現在利用可能なタグの一覧を確認するには、 Docker Hub 上のレジストリをご覧ください。
Docker Hub への貢献¶
誰でも Docker Hub レジストリから公開イメージを取得(pull)できるように設定可能です。自分のレジストリでイメージを共有したい場合は、まず登録が必要です。
Docker Hub にリポジトリの送信¶
リポジトリを対象のレジストリに送信(push)するためには、イメージに名前を付けるか、 こちら で見たように、コンテナにイメージ名を付けてコミットする必要があります。
それからこのリポジトリを、レジストリが表す名前やタグで送信できます。
$ docker push yourname/newimage
対象のイメージをアップロードしたら、あなたの同僚やコミュニティにおいても利用可能になります。
Docker Hub の機能¶
それでは、Docker Hub のいくつかの機能について、詳細を見ていきましょう。より詳しい情報は こちら からご覧いただけます。
- プライベート・リポジトリ
- 組織とチーム
- 自動構築
- ウェブフック
プライベート・リポジトリ¶
イメージを一般公開せず、誰とも共有したくない場合があります。そのような時は Docker Hub のプライベート・リポジトリが利用できます。サインアップや料金プランは、 こちらを ご覧ください。
組織とチーム¶
プライベート・リポジトリの便利な機能の1つは、組織やチームにおける特定メンバーのみとの共有です。Docker Hub 上で組織(organization)を作り、同僚と協力しながらプライベート・リポジトリの管理が可能です。組織の作成や管理方法については こちら をご覧ください。
自動構築¶
自動構築(Automated Build)とは、 GItHub や Bitbucket を更新したら、Docker Hub が直接イメージの構築や更新をします。これは、選択した GitHub か Bitbucket リポジトリに対するコミットをきっかけ(フック)とします。コミットをプッシュ(push)したのをトリガとして、イメージを構築・更新します。
自動構築のセットアップ¶
- Docker Hub アカウント を作成してログインします。
- Linked Accounts (アカウントのリンク)から自分の GitHub もしくは Bitbucket アカウントをリンクします。
- Create Repository (リポジトリの作成)からリポジトリを作成します。
- リポジトリの Builds から Configure Automated Builds を選択し自動構築の設定をします。
- 選択した GitHub もしくは Bitbucket プロジェクト上で、構築内容を
Dockerfile
にまとめます。 - 必要があれば構築時のブランチを指定します(デフォルトは
master
ブランチです)。 - 自動構築名を指定します。
- 構築時に追加するオプションの Docker タグを指定します。
Dockerfile
の場所を指定します。デフォルトは/
です。
自動構築の設定を有効化しておけば、ビルドをトリガとして数分後に自動構築が開始します。自動ビルドの状態は Docker Hub レジストリ上で見られます。GitHub や Bitbucket リポジトリの同期が終わるまで、自動ビルドを無効化できません。
リポジトリの自動構築状態や出力を確認したい場合は、自分の リポジトリ一覧ページ に移動し、対象のリポジトリ名をクリックします。自動構築が有効な場合は、リポジトリ名の下に "automated build" と表示されます。リポジトリの詳細ページに移動し、"Build details" タブをクリックしたら、Docker Hub 上における構築状態や、全ての構築トリガが表示されます。
自動構築が完了したら、無効化や設定の削除が可能になります。ここで注意すべきは、docker push
コマンドを使って送信しても、自動構築を行わない点です。自動構築の管理対象は、あくまでも GitHub と Bitbucket リポジトリに対してコードをコミットした時のみです。
リポジトリごとに複数の自動構築設定や、特定の Dockerfile や Git ブランチの指定も可能です。
次のステップ¶
さぁ Docker を使いましょう!
参考
- Store images on Docker Hub
- https://docs.docker.com/engine/userguide/containers/dockerrepos/