Docker Hubの使い方とGitHubからのDockerイメージ自動ビルド:いまさら聞けないDocker入門(終)(2/2 ページ)
公式Dockerレジストリ「Docker Hub」にDockerコンテナーを公開する方法や、Automated Buildを利用してGitHubからDockerイメージを自動ビルドする方法などを紹介します。
Docker Hub Automated Buildを利用したGitHubからのDockerイメージ自動ビルド
Dockerイメージを共有するもう一つの方法として、Docker Hubの「Automated Build」機能があります。Automated BuildはDockerイメージの元となるDockerfileをDocker Hubのビルドクラスターに読み込ませ、Dockerイメージを作成、Docker Hubリポジトリで公開する仕組みです。
Dockerfileをビルドクラスターに読み込ませるためには、事前にDockerfileを含むGitHubもしくはBitbucketのリポジトリとDocker Hubとの連携設定が必要です。今回はGitHubで試してみます。GitHubのサインアップ、リポジトリの作成は省略します。
GitHubリポジトリの準備
Automated Buildを利用するためには、GitHubリポジトリ内に、作成したいDockerイメージのDockerfileを作成しておきます。その他のファイル、ディレクトリには特に依存しないため、既存のGitHubリポジトリにDockerfileを追加してAutomated Buildに対応させるという使い方も可能です。
Docker Hub 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設定が作成されます。
GitHubからのDockerイメージ自動ビルド
設定が完了したら早速初回のビルドが実行されます。完了ページの[build details]リンクから、リポジトリのビルド状況を確認します。
「Builds History」にビルド履歴がリストされ、[Status]列に現在の状況が表示されます。「Building」の場合はビルドクラスターでDockerコンテナーが実行中です。
しばらく待ち、「Finished」になればビルドが完了し、Dockerイメージが登録済みです。画面右上のように、「docker pull {ユーザー名}/{イメージ名}」でダウンロード可能です。「Error」になった場合はビルドに失敗していますので、[build Id]列のIDのリンクをクリックし、ビルドログを確認しましょう。
再度ビルドするときは、画面右上の[Start a Build]でビルドが開始します。
Tips「Build Triggerを使ったDockerイメージの自動ビルド」
Automated Buildの「Build Trigger」という仕組みを利用すると、GitHubのWebhookと連携してGitHubリポジトリが更新されると自動でDockerイメージのビルドを実行できます。Docker Hubリポジトリの画面右側の[Settings]にある「Build Trigger」から設定します。
詳しい手順は以下を参照ください。
Dockerの世界が広がる機能を活用してみよう
今回は、Dockerイメージをシェアするための方法として、「docker push」コマンドと「Docker Hub Automated Build」を紹介しました。自分専用のプライベートな使い方も良し、ソフトウェアを公開するためのパブリックな使い方もよし、Dockerの世界が広がるこれらの機能をぜひ活用してください。
なお、本シリーズは今回が最終回となります。Dockerの進化は速いので、これからも新しい機能がどんどん登場すると思いますが、Dockerの基本機能を紹介した本シリーズが皆さんのDocker活用に末永く役立つことを願ってやみません。短い間でしたがお付き合いいただきありがとうございました!
著者プロフィール
大瀧隆太
所属/職種:クラスメソッド株式会社 シニアソリューションアーキテクト
ビール片手に邦楽ロックバンドのライブ/フェスへの参加をこよなく愛する。業務ではAWS導入支援やAWS研修の講師に携わる一方、自動化/デプロイツールの活用でクラウドエンジニアがどこまでスケールできるのか日々試行錯誤している。
ブログURL:http://dev.classmethod.jp/
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windows Insider用語解説:「Docker」はアプリケーション展開の新標準!?
アプリケーション展開のための管理ツールとして急速に知名度を高めている「Docker」。その特徴やメリット/デメリット、そしてMicrosoftとの関わりについて、アプリケーション展開の観点で短くまとめる。 - Dockerコンテナーでも共通Cookbookを使えるように:Dockerに対応した「Chef Container」β版リリース
ChefでDockerコンテナーの管理を効率的にしようという取り組みが始まった。まだ、バージョン0.2.0β版ではあるが、既存Cookbookをコンテナー環境でも利用できるようにするなど、意欲的な実装が含まれている。 - エンタープライズでのDocker利用普及を後押し:グーグル主導のDockerコンテナー管理フレームワーク「Kubernetes」にマイクロソフトやレッドハットが参加
アプリケーションポータビリティを高めるとして話題のDockerをエンタープライズレベルで利用するための活動が活発化。コンテナー管理フレームワークの開発に複数の企業が加わる。 - DockerでUID分離が実現したらHadoop運用は効率化する――米Altiscaleが開発中
Hadoop環境もDockerを使えば管理が効率化する? AltiscaleがYARNへの適用を進めている。 - AD連携を強化しXFSが標準に:「Red Hat Enterprise Linux 7」がリリース――systemd導入、Dockerサポート
レッドハットが企業向けLinuxディストリビューションの最新版となる「Red Hat Enterprise Linux 7」をリリースした。 - 企業利用の基準を満たせる品質と機能を実装:正式版「Docker 1.0」がリリース――Microsoft AzureもDocker利用を支援
オープンソースのコンテナー管理ソフトの最新版「Docker 1.0」がリリースされた。マイクロソフトもMicrosoft Azure上のDocker利用を支援するデモを披露した。 - DockerがCloud Foundry Foundationに参加を表明
コンテナー構成情報を管理する「Docker」の開発企業が「Cloud Foundry」の開発団体に参加を表明。これはつまり……? - AWS情報アップデート:「AWS Elastic Beanstalk」でDockerコンテナの作成、管理が可能に
Amazon Web ServicesのPaaS環境「AWS Elastic Beanstalk」で、Dockerコンテナのデプロイや作成、管理ができるようになった。 - 認定ホスト間でのシームレスな機能を保証:米レッドハット、コンテナー化されたアプリケーションの認定プログラムを発表
米レッドハットは2014年3月11日、コンテナー化されたアプリケーションの認定プログラム「Red Hat Container Certification」を発表した。既存のアプリケーション認定プログラムの延長だ。 - ユーザーは「PaaS」「IaaS」を求めているわけではない:狭義の「PaaS」を超えようとするレッドハットのOpenShift
レッドハットは、PaaS製品/サービスの「OpenShift」で、アプリケーションデリバリメカニズムの一部になる一方、IaaSとの融合を目指している。米レッドハットのOpenShift責任者に聞いた。 - DevOps時代のJavaプログラマのためのオープンクラウド入門(1):“使用”より“構築”で学ぶオープンPaaS「OpenShift」
オープンなクラウドで重要性を増すJava。DevOps時代のJavaプログラマはアプリケーション開発者(Dev)もデプロイや運用(Ops)面におけるクラウド/インフラ技術への幅広い理解が必要となる。本連載では、さまざまなオープンクラウド技術を紹介していく。初回は、オープンソースのPaaSであるOpenShiftを紹介。どんな技術を使ってPaaSが実装されているのかを理解しよう