Dockerイメージを共有するもう一つの方法として、Docker Hubの「Automated Build」機能があります。Automated BuildはDockerイメージの元となるDockerfileをDocker Hubのビルドクラスターに読み込ませ、Dockerイメージを作成、Docker Hubリポジトリで公開する仕組みです。
Dockerfileをビルドクラスターに読み込ませるためには、事前にDockerfileを含むGitHubもしくはBitbucketのリポジトリとDocker Hubとの連携設定が必要です。今回はGitHubで試してみます。GitHubのサインアップ、リポジトリの作成は省略します。
Automated Buildを利用するためには、GitHubリポジトリ内に、作成したいDockerイメージのDockerfileを作成しておきます。その他のファイル、ディレクトリには特に依存しないため、既存のGitHubリポジトリにDockerfileを追加してAutomated Buildに対応させるという使い方も可能です。
ここからは、Docker HubのWeb画面で操作していきます。リポジトリ一覧画面右側にある[+ Add Repository]ボタンから[Automated Build]をクリックします。
連携するサービスを選択します。今回はGitHubを利用するので、GitHubの[Select]ボタンをクリックします。
Docker HubからGitHubへアクセスを許可する項目を選択します。今回はAutomated Buildの利用に必要な[Public and Private]の[Select]ボタンを選択します。
GitHubの認証画面に切り替わります。連携させるGitHubアカウントのユーザー名、パスワードを入力し、[Sign in]をクリックします。
GitHubのアプリケーション認証画面が表示されます。「Repositries」へのアクセスが許可になっていることを確認し、[Authorize application]ボタンをクリックします。
Docker Hubの画面に自動的に戻り、GitHubリポジトリの一覧が表示されます。Automated Buildの対象とするGitHubリポジトリを確認し、[Select]ボタンをクリックします。
続いて、Automated Buildで作成するDockerイメージ(リポジトリ)名とGitHubリポジトリからDockerfileを取り出す「git clone」相当の設定を入力します。DockerfileをGitHubリポジトリのルート以外に配置している場合は、[Dockerfile Location]を配置したディレクトリに変更する必要があります。
[Create Repository]をボタンをクリックすると、Automated Build設定が作成されます。
設定が完了したら早速初回のビルドが実行されます。完了ページの[build details]リンクから、リポジトリのビルド状況を確認します。
「Builds History」にビルド履歴がリストされ、[Status]列に現在の状況が表示されます。「Building」の場合はビルドクラスターでDockerコンテナーが実行中です。
しばらく待ち、「Finished」になればビルドが完了し、Dockerイメージが登録済みです。画面右上のように、「docker pull {ユーザー名}/{イメージ名}」でダウンロード可能です。「Error」になった場合はビルドに失敗していますので、[build Id]列のIDのリンクをクリックし、ビルドログを確認しましょう。
再度ビルドするときは、画面右上の[Start a Build]でビルドが開始します。
Automated Buildの「Build Trigger」という仕組みを利用すると、GitHubのWebhookと連携してGitHubリポジトリが更新されると自動でDockerイメージのビルドを実行できます。Docker Hubリポジトリの画面右側の[Settings]にある「Build Trigger」から設定します。
詳しい手順は以下を参照ください。
今回は、Dockerイメージをシェアするための方法として、「docker push」コマンドと「Docker Hub Automated Build」を紹介しました。自分専用のプライベートな使い方も良し、ソフトウェアを公開するためのパブリックな使い方もよし、Dockerの世界が広がるこれらの機能をぜひ活用してください。
なお、本シリーズは今回が最終回となります。Dockerの進化は速いので、これからも新しい機能がどんどん登場すると思いますが、Dockerの基本機能を紹介した本シリーズが皆さんのDocker活用に末永く役立つことを願ってやみません。短い間でしたがお付き合いいただきありがとうございました!
大瀧隆太
所属/職種:クラスメソッド株式会社 シニアソリューションアーキテクト
ビール片手に邦楽ロックバンドのライブ/フェスへの参加をこよなく愛する。業務ではAWS導入支援やAWS研修の講師に携わる一方、自動化/デプロイツールの活用でクラウドエンジニアがどこまでスケールできるのか日々試行錯誤している。
ブログURL:http://dev.classmethod.jp/
Copyright © ITmedia, Inc. All Rights Reserved.