始める前に
目的
このチュートリアルでは、GitHubに現在格納されているアプリケーションのソース・ファイルを取得して、Oracle Container Cloud Serviceを使用してアプリケーションをDockerコンテナとして作成およびデプロイすることで、既存の開発プロセスを拡張する方法を示します。
所要時間
30分
背景
このチュートリアルでは、次を説明します。
- GitHubでアプリケーション・ソース・ファイルが更新されるたびに、Docker Hubが自動的に新しいDockerイメージを作成するように設定します
- Oracle Container Cloud Serviceを使用して、新しいサービスをDockerイメージに基づいてDockerコンテナとして手動でデプロイします
シナリオ
このチュートリアルでは、次を実行します。
- Docker HubアカウントをGitHubアカウントとリンクすることで準備します(まだリンクされていない場合)。
- GitHubのOracle Container Cloud Serviceアカウントからユーザー自身のGitHubアカウントの新しいリポジトリにdocker-hello-worldアプリケーションをフォークします。
- ソース・ファイルが変更されるたびに、自動的にdocker-hello-worldアプリケーションから新しいDockerイメージをDocker Hubが作成するように設定します。
- Docker Hubで自動ビルドを手動でトリガーすることで、GitHubのdocker-hello-worldソース・ファイルから新しいDockerイメージを作成します。
- 新しいDockerイメージに基づいて、Oracle Container Cloud Serviceでサービスを作成します。
- Dockerコンテナとしてサービスをデプロイします。
- docker-hello-worldアプリケーションが実行中のDockerコンテナ内で実行されていることを確認します。
必要なもの
必要なリソース/ツール: | 詳細: |
---|---|
Webブラウザ | Oracle Cloudサービスで作業するには、Webブラウザが必要です。最小要件を次に示します。
|
Oracle Container Cloud Serviceへのサブスクリプション | Oracle Container Cloud Serviceを使用する前に:
詳細は、Oracle Help CenterのOracle Container Cloud Serviceの使用に関する項を参照してください。 |
GitHubアカウント | GitHubアカウントをまだ持っていない場合には、https://github.com/に移動してサインアップし、アカウントを取得します。 |
Docker Hubアカウント | Docker Hubアカウントをまだ持っていない場合には、https://hub.docker.com/に移動してサインアップし、アカウントを取得します。
Docker HubアカウントはGitHubアカウントにリンクされている必要があります。まだ2つのアカウントがリンクされていない場合(またはリンクされているかわからない場合)、「チュートリアルの準備」の手順に従ってリンクします。 |
1. チュートリアルの準備
このチュートリアルの手順を実行するには、Docker HubアカウントがGitHubアカウントにすでにリンクされている必要があります。まだ2つのアカウントがリンクされていない場合(またはリンクされているかわからない場合)、次の手順に従ってください。2つのアカウントがすでにリンクされている場合には、次の項にスキップしてください。
Docker HubアカウントをGitHubアカウントにリンク
- https://hub.docker.com/loginでDocker Hubアカウントにログインします。
- メニュー・バーでユーザー名をクリックして「Settings」を選択し、「Account Settings」ページを表示します。
- 「Linked Accounts & Services」タブが表示されます。
- 「Link Github」をクリックして、Docker HubアカウントをGitHubアカウントにリンクします。
ヒント: Docker HubアカウントがすでにGitHubアカウントにリンクされている場合には、「Unlink GitHub」ボタンが表示されます。その場合、次の項にスキップしてください。Docker HubアカウントがまだGitHubアカウントにリンクされていない場合には、「Link GitHub」が表示されます。
2. GitHubでdocker-hello-worldアプリケーションをフォーク
このチュートリアルでは、docker-hello-worldアプリケーションを作成およびデプロイします。アプリケーションのソース・ファイルはすでにdocker-imagesと呼ばれるGitHubリポジトリに入っています。docker-imagesリポジトリを自分のGitHubアカウントにフォークしてコピーするだけですみます。
- https://github.com/loginでGitHubアカウントにログインします。
-
https://github.com/oracle/docker-images/tree/master/ContainerCloud/images/docker-hello-worldに移動します。
- 「repository」ページの上部にあるメニューで「Fork」ボタンをクリックします。
docker-imagesリポジトリの自身のコピーが作成されました。
3. Docker Hub自動ビルドの作成
- https://hub.docker.com/loginでDocker Hubアカウントにログインします。
- Docker Hubの「Create」メニューから「Create Automated Build」を選択します。
- 「Create Auto-build GitHub」をクリックして、GitHubアカウントに自動ビルドを作成するリポジトリが含まれていることを表示します。
- 自分のGitHubアカウントに対してフォークしたdocker-imagesリポジトリを選択します。
- 「Create Automated build」ページで次を実行します。
- 次の値を入力します。
- Name: docker-hello-world
- Short Description: Simple Hello World Example
- 「Create」をクリックします。
- 「Build Settings」タブにナビゲートします。
- 更新がGitHubにプッシュされるたびに自動的に作成される
- マスターGitHubブランチを使用して作成される
- リポジトリのルート・ディレクトリでDockerfileのマスター・ビルド・ルールを使用して作成される
- Docker Hubでタグ
latest
が指定される - 「Dockerfile Location」フィールドの値を/ContainerCloud/images/docker-hello-world/に変更します
このチュートリアルでは、他のデフォルト設定はそのままでかまいません。ただし、docker-hello-worldアプリケーションからGitHubに対して更新をプッシュしないため、次の項に示すように手動でビルドをトリガーすることになります。
- 「Save Changes」をクリックします。
自動ビルドが作成されると、「Automated Build」画面の「Repo Info」タブが表示されます。
「Build Settings」タブに定義する作成ルールは、イメージがいつどのように作成されるかを示します。デフォルトでは、イメージは次のようになります。
4. ビルドを手動でトリガー
Docker Hubで自動ビルドの設定が完了したため、docker-hello-worldアプリケーションに対する変更がGitHubのdocker-imagesリポジトリにプッシュされるたびに新しいDockerイメージが作成されます。ただし、このチュートリアルでは、GitHubでdocker-hello-worldソース・ファイルを変更しません。Dockerイメージを作成するには、かわりに手動でビルドをトリガーします。
- 「Build Settings」タブで、マスター・ブランチの隣にある「Trigger」をクリックしてデフォルトのビルド設定でイメージを作成します。
- Docker Hubリポジトリの「Build Details」ページにナビゲートします。
- 「Repo Info」タブにナビゲートします。
GitHubリポジトリからのREADME.mdファイルがDockerリポジトリの「Full Description」フィールドに表示されていることがわかります。
- 「Dockerfile」タブにナビゲートします。
GitHubリポジトリからのDockerfileファイルがDockerリポジトリに含まれたことがわかります。
トリガーしたばかりのビルドが「Build Details」ページに表示されます。指定したビルド設定のため、イメージはマスターGitHubブランチを使用して作成され、Docker Hubでタグlatest
が指定されます。
イメージが正常に作成されると、「Build Details」ページにタグがlatest
で表示されます。
ヒント: イメージ・ステータスが「Success」に変更されたことを確認するには、ブラウザをリフレッシュする必要がある可能性があります。
5. Oracle Container Cloud Serviceを使用して新しいサービスを作成
- 管理者から受け取った資格証明を使用して、URLからOracle Container Cloud Serviceコンテナ・コンソールにログインします。
-
「Services」ページで、「New Service」をクリックして「Service Editor」を表示し、
- 次の値を入力します。
- Service Name: Hello World Demo
- Image: YourAccount/docker-hello-world:latest (Docker Hubアカウントからのイメージ)
- Ports: TCPプロトコルを使用してホスト・ポート8080からコンテナ・ポート80へのマッピングを設定します(ポート8080は後でデプロイされたアプリケーションが実行されているかを確認するのに使用します)
- 「Save」をクリックして新しいサービスを作成し、「Service Editor」を閉じます。
Hello World Demoサービスをデプロイする準備ができました。
6. Oracle Container Cloud Serviceを使用して新しいサービスをデプロイ
- コンテナ・コンソールの「Services」ページで、作成したばかりのHello World Demoサービスの隣にある「Deploy」ボタンをクリックします。
- デプロイメントの名前
- デプロイメントを実行するホストのプール
- デプロイするコンテナの数およびデプロイ先となるホストの選択方法
- 「Deploy」ダイアログで、「Deploy」をクリックして、デフォルト値を受け入れ、サービスをデプロイして開始します。
- 「Hostname」列のホストの名前をクリックして、コンテナを実行しいるホストの詳細を表示します。
- 「Host」ページで、「public_ip」フィールドの値をコピーします。
「Deploy」ダイアログが表示され、次に示す項目のデフォルト値が表示されます。
「Deployments」ページが表示され、作成したばかりのデプロイメントの進捗詳細が表示されます。
まず、docker-hello-worldイメージがDocker Hubから取得されます。イメージがダウンロードされると、コンテナとして起動されます。「Deployments」ページにコンテナのステータスが「Running」と表示され、コンテナが実行されているホストの名前が表示されます。
「Host」ページが表示され、コンテナを実行しているホストの詳細が表示されます。
7. デプロイメントの検証
- 新しいブラウザ・ウィンドウを開きます。
- URLを形式
http://<public_ip>:8080
で入力し、Hello World Demoコンテナ内で実行されているdocker-hello-worldアプリケーションにアクセスします。ここで、 -
<public_ip>
は、「Host」ページの「public_ip」フィールドからコピーされた値です(例:192.0.2.254
) - 8080は前にコンテナ・ポート80にマッピングしたホスト・ポートです
たとえば、完全なURLはhttp://192.0.2.254:8080
のようになります
ブラウザがページをロードすると、ページには次のようなメッセージが表示されます。
Hello world from 0.Hello-World-Demo.Hello-World-Demo-20160829-120946!
おめでとうございます。Docker Hubからdocker-hello-worldアプリケーションが作成され、Oracle Container Cloud Serviceを使用して実行中のDockerコンテナ内にデプロイされました。
詳細
- Oracle Help Center内のOracle Container Cloud Serviceの開始に関する項
- Oracle Help Center内のOracle Container Cloud Serviceの使用に関する項
- GitHubでのOracle Container Cloud Serviceスタックの作成に関する情報
- Oracle Container Cloud Serviceビデオ