Docker Hubの使い方とGitHubからのDockerイメージ自動ビルドいまさら聞けないDocker入門(終)(1/2 ページ)

公式Dockerレジストリ「Docker Hub」にDockerコンテナーを公開する方法や、Automated Buildを利用してGitHubからDockerイメージを自動ビルドする方法などを紹介します。

» 2014年08月26日 18時00分 公開
[大瀧隆太,クラスメソッド株式会社]

早くもDocker 1.2がリリース

 前々回の「ついに1.0がリリース! Dockerのインストールと主なコマンドの使い方」、前回の「Dockerfileとdocker buildコマンドでDockerイメージの作成」と、Dockerイメージの作り方として、「docker commit」コマンド、「docker build」コマンドを紹介しました。

 Dockerは開発のスピードが速く、8月22日にはバージョン1.2.0がリリースされています。詳細はブログ「ANNOUNCING DOCKER 1.2.0」を参照してください。

 今回は、Dockerイメージをシェアするための「Dockerレジストリ」と公式レジストリである「Docker Hub」の利用方法を紹介します。

Dockerイメージの共有方法

 手元の開発用PCと本番用クラウド環境など複数のマシンで共通のDockerコンテナーを実行するために、Dockerイメージを共有できます。Dockerイメージの共有方法は大きく分けて2通りあります。

  • 「docker push」による「Dockerレジストリ」へのDockerコンテナーのアップロード
  • DockerfileとGitリポジトリによるDocker HubでのAutomated Build

Dockerレジストリ「Docker Hub」にDockerコンテナーを公開

 「Dockerレジストリ」は、Dockerイメージを共有するためのWebサービスです。Docker社が提供するDockerレジストリの「Docker Hub」の他、自前でDockerレジストリを構築することもできます。Docker Hubの利用プランはいくつかあり、Freeプランであれば費用は掛からないため、今回はDocker Hubを利用してみます。

Docker Hubのアカウント登録

 Docker Hubのアカウントを登録します。Docker Webサイトのトップページ右上の[Sign Up]をクリックし登録画面を表示します。

 「Username」は一意な任意のユーザー名を入力します(Docker HubにDockerイメージをアップロードできるのは、このユーザー名とイメージ名に含まれるユーザー名が同一のもののみであることに注意します)。パスワードとメールアドレスを入力し、[Sign Up]をクリックし登録完了です。ユーザー登録の代わりにGitHubアカウントのOAuth認証にも対応しています。

 登録したアカウントのプロフィール画面が表示されます。ただし、メール認証前なので仮登録となり、まだイメージのアップロードはできない状態です。

 アカウント登録時に入力したメールアドレス宛てに認証メールが送付されますので、メールを確認しメール本文にある[Confirm Your Email]リンクをクリックします(テキスト形式の場合は本文記載のURLにアクセスします)。

 以下のような確認完了ページに遷移すれば認証成功です。

 プロフィールページが以下のようにリポジトリ(イメージの管理単位)一覧の画面になれば、Dockerイメージをアップロードする準備は完了です。

「docker push」コマンドの実行

 ここからは、Docker Engineを実行するLinuxマシンを使い、「docker」コマンドでDockerイメージをDocker Hubにアップロードします。まずは、登録したアカウントでDocker Hubにログインします。Docker Hubへのログインは、「docker login」コマンドを実行します。登録したユーザー名、パスワード、メールアドレスを順に入力します。

$ docker login
Username: atmarkit
Password:
Email: takipone@example.com
Login Succeeded
$

 現在ログインしているDockerレジストリおよびアカウントは、「docker info」コマンドの「Username」「Registry」で確認できます。

$ docker info
Containers: 2
Images: 75
Storage Driver: devicemapper
 Pool Name: docker-8:1-262158-pool
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 2543.1 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 4.3 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.1
Kernel Version: 3.13.0-24-generic
Username: atmarkit
Registry: [https://index.docker.io/v1/]
WARNING: No swap limit support
$

 では、今回はあらかじめ作成したDockerイメージ「atmarkit/nginx」をDocker Hubにアップロードします。アップロードできるのは、イメージ名が「{ユーザー名}/」から始まるもののみであることに注意してください。Docker Hub以外の自前のDockerレジストリの場合は、「{ユーザー名}」の代わりに「{レジストリのホスト名/IPアドレス}:{ポート番号}」を指定します。

$ docker push atmarkit/nginx
The push refers to a repository [atmarkit/nginx] (len: 1)
Sending image list
Pushing repository atmarkit/nginx (1 tags)
511136ea3c5a: Image already pushed, skipping
8a1d8569bf87: Image already pushed, skipping
2be841034d7d: Image already pushed, skipping
99e40d806d07: Image already pushed, skipping
ef83896b7fb9: Image already pushed, skipping
203adbab22bd: Image successfully pushed
83a1ac19e2b6: Image successfully pushed
62349a563a15: Image successfully pushed
20bf3db53476: Image successfully pushed
Pushing tag for rev [20bf3db53476] on {https://registry-1.docker.io/v1/repositories/atmarkit/nginx/tags/latest}
$

 アップロードできました! Docker Hubのリポジトリ一覧ベージをリロードすると、アップロードしたDockerイメージが確認できます。

 アップロードしたDockerイメージは、第2回のDockerイメージと同様、「docker pull」コマンドで利用できます。

Dockerリポジトリの説明を活用しよう

 ただ、どんなソフトウェアがインストールされているのか、どんな構成なのかなど、Dockerイメージの中身はDocker Hubの画面からは確認できません。

 不特定多数のユーザーに公開するDockerイメージの場合は、リポジトリ一覧からDockerイメージをクリック、画面右側のメニューの[Description]リンクで追加できるリポジトリの説明を活用しましょう。イメージの簡単な説明文、元となるDockerfileが確認できる何らかの手段を提示するといいでしょう。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。