Docker Hubの使い方とGitHubからのDockerイメージ自動ビルド:いまさら聞けないDocker入門(終)(1/2 ページ)
公式Dockerレジストリ「Docker Hub」にDockerコンテナーを公開する方法や、Automated Buildを利用してGitHubからDockerイメージを自動ビルドする方法などを紹介します。
早くも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が確認できる何らかの手段を提示するといいでしょう。
Copyright © ITmedia, Inc. All Rights Reserved.