チュートリアル: Linux Service Fabric クラスター上にコンテナー イメージを作成する
このチュートリアルは、Linux Service Fabric クラスター内のコンテナーの使い方を実演するるチュートリアル シリーズの第 1 部です。 このチュートリアルでは、複数コンテナーのアプリケーションを Service Fabric で使うことができるように準備します。 以降のチュートリアルでは、これらのイメージを Service Fabric アプリケーションの一部として使います。 このチュートリアルで学習する内容は次のとおりです。
- GitHub からアプリケーション ソースを複製する
- アプリケーション ソースからコンテナー イメージを作成する
- Azure Container Registry (ACR) インスタンスをデプロイする
- ACR のコンテナー イメージにタグを付ける
- イメージを ACR にアップロードする
このチュートリアル シリーズで学習する内容は次のとおりです。
- Service Fabric のコンテナー イメージを作成する
- コンテナーで Service Fabric アプリケーションをビルドして実行する
- Service Fabric でのフェールオーバーとスケーリングの処理方法
前提条件
- Service Fabric 用に設定された Linux 開発環境。 こちらの説明に従って、Linux 環境を設定します。
- このチュートリアルでは、Azure CLI バージョン 2.0.4 以降を実行している必要があります。 バージョンを確認するには、
az --version
を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールに関するページを参照してください。 - さらに、使用可能な Azure サブスクリプションを持っている必要があります。 無料試用版について詳しくは、こちらをご覧ください。
アプリケーションのコードを入手する
このチュートリアルで使うサンプル アプリケーションは投票アプリです。 アプリケーションは、フロントエンド Web コンポーネントとバックエンド Redis インスタンスで構成されています。 コンポーネントは、コンテナー イメージにパッケージ化されています。
アプリケーションのコピーを開発環境にダウンロードするには、git を使います。
git clone https://github.com/Azure-Samples/service-fabric-containers.git
cd service-fabric-containers/Linux/container-tutorial/
ソリューションには 2 つのフォルダーと 'docker-compose.yml' ファイルが含まれています。 'azure-vote'フォルダーには、イメージのビルドに使用される Dockerfile と共に Python フロントエンド サービスが格納されています。 'Voting' ディレクトリには、クラスターにデプロイされる Service Fabric アプリケーション パッケージが含まれています。 これらのディレクトリには、このチュートリアルに必要な資産が含まれています。
コンテナー イメージを作成する
azure-vote ディレクトリ内で次のコマンドを実行して、フロントエンド Web コンポーネントのイメージをビルドします。 このコマンドは、このディレクトリ内の Dockerfile を使ってイメージをビルドします。
docker build -t azure-vote-front .
Note
アクセス許可が拒否される場合、sudo なしで Docker を操作する方法に関するこのドキュメントに従います。
このコマンドは、必要なすべての依存関係を Docker Hub からプルする必要があるため、時間がかかる場合があります。 完了したら、作成した azure-vote-front イメージを docker images コマンドを使って確認します。
docker images
Azure Container Registry のデプロイ
最初に、az login コマンドを実行して Azure アカウントにサインインします。
az login
次に、az account コマンドを使って、Azure Container Registry を作成するためのサブスクリプションを選びます。 <subscription_id> には、お使いの Azure サブスクリプションのサブスクリプション ID を入力する必要があります。
az account set --subscription <subscription_id>
Azure Container Registry をデプロイする場合、まず、リソース グループが必要です。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
az group create コマンドを使用して、リソース グループを作成します。 この例では、myResourceGroup という名前のリソース グループが westus リージョンに作成されます。
az group create --name <myResourceGroup> --location westus
az acr create コマンドで Azure Container Registry を作成します。 <acrName> は、お使いのサブスクリプション下に作成するコンテナー レジストリの名前に置き換える必要があります。 この名前は、英数字を使用して一意にする必要があります。
az acr create --resource-group <myResourceGroup> --name <acrName> --sku Basic --admin-enabled true
このチュートリアルの残りの部分では、選択したコンテナー レジストリ名のプレースホルダーとして「acrName」を使用します。 この値をメモしておいてください。
コンテナー レジストリにサインインする
イメージをプッシュする前に、ACR のインスタンスにサインインします。 az acr login コマンドを使用して、操作を完了します。 コンテナー レジストリの作成時に割り当てられた一意名を入力します。
az acr login --name <acrName>
このコマンドは、完了すると 'Login Succeeded’(ログインに成功しました) というメッセージを返します。
コンテナー イメージのタグ付け
各コンテナー イメージは、レジストリの名前 loginServer でタグ付けする必要があります。 このタグは、イメージ レジストリにコンテナー イメージをプッシュするときに、ルーティングするために使用されます。
現在のイメージの一覧を表示するには、docker images コマンドを使用します。
docker images
出力:
REPOSITORY TAG IMAGE ID CREATED SIZE
azure-vote-front latest 052c549a75bf About a minute ago 913MB
loginServer 名を取得するには、次のコマンドを実行します。
az acr show --name <acrName> --query loginServer --output table
これにより、以下のような結果がテーブルに出力されます。 この結果は、次の手順でコンテナー レジストリにプッシュする前に、azure-vote-front イメージのタグ付けに使用されます。
Result
------------------
<acrName>.azurecr.io
ここでは、azure-vote-front イメージにお使いのコンテナー レジストリの loginServer をタグ付けします。 また、イメージ名の末尾に :v1
を付加します。 このタグは、イメージのバージョンを示します。
docker tag azure-vote-front <acrName>.azurecr.io/azure-vote-front:v1
タグを付けた後、"docker images" を実行して動作を確認します。
出力:
REPOSITORY TAG IMAGE ID CREATED SIZE
azure-vote-front latest 052c549a75bf 23 minutes ago 913MB
<acrName>.azurecr.io/azure-vote-front v1 052c549a75bf 23 minutes ago 913MB
イメージをレジストリにプッシュ
azure-vote-front イメージをレジストリにプッシュします。
次の例を使用して、ACR loginServer 名を環境の loginServer に置き換えます。
docker push <acrName>.azurecr.io/azure-vote-front:v1
docker push コマンドが完了までに数分かかります。
レジストリ内のイメージの一覧表示
お使いの Azure Container Registry にプッシュされたイメージの一覧を返すには、az acr repository list コマンドを使用します。 ACR のインスタンス名でコマンドを更新します。
az acr repository list --name <acrName> --output table
出力:
Result
----------------
azure-vote-front
チュートリアル完了時には、コンテナー イメージがプライベートの Azure Container Registry インスタンスに格納されています。 このイメージは、以降のチュートリアルで、ACR から Service Fabric クラスターにデプロイされます。
次のステップ
このチュートリアルでは、アプリケーションを GitHub から取得し、コンテナー イメージを作成して、レジストリにプッシュしました。 次の手順を完了しました。
- GitHub からアプリケーション ソースを複製する
- アプリケーション ソースからコンテナー イメージを作成する
- Azure Container Registry (ACR) インスタンスをデプロイする
- ACR のコンテナー イメージにタグを付ける
- イメージを ACR にアップロードする
次のチュートリアルに進み、Yeoman を使ってコンテナーを Service Fabric アプリケーションにパッケージ化する方法を学習してください。