チュートリアル:Azure コンテナー レジストリを作成してコンテナー イメージをプッシュする
この記事は 3 つのパートで構成されるチュートリアルの 2 番目のタスクです。 チュートリアルのパート 1 では、Node.js Web アプリケーションの Docker コンテナー イメージを作成しました。 このチュートリアルでは、このイメージを Azure Container Registry にプッシュします。 コンテナー イメージを作成する必要がある場合は、チュートリアル 1 – コンテナー イメージの作成に戻ります。
Azure Container Registry は、Azure におけるプライベート Docker レジストリです。 シリーズの第 2 部であるこのチュートリアルでは、次のことを行います。
- Azure CLI による Azure Container Registry インスタンスの作成
- Azure Container Registry のコンテナー イメージのタグ付け
- レジストリへのイメージのアップロード
このシリーズの最後となる次の記事では、コンテナーをプライベート レジストリから Azure Container Instances にデプロイします。
開始する前に
このチュートリアルを完了するには、次の要件を満たす必要があります。
Azure CLI:ローカル コンピューターに Azure CLI バージョン 2.0.29 以降がインストールされている必要があります。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールに関するページを参照してください。
Docker:このチュートリアルの前提として、コンテナー、コンテナー イメージ、基本 docker
コマンドなど、Docker のコア概念を基本的に理解している必要があります。 Docker やコンテナーの基礎に関する入門情報については、「Docker overview」(Docker の概要) を参照してください。
Docker:このチュートリアルを完了するには、Docker がローカル環境にインストールされている必要があります。 Docker には、macOS、Windows、Linux 上で Docker 環境の構成を行うパッケージが用意されています。
重要
Azure Cloud Shell には Docker デーモンが含まれていないため、このチュートリアルを完了するためには、Azure CLI と Docker エンジンの両方を自分でローカル コンピューターにインストールする必要があります。 このチュートリアルで Azure Cloud Shell を使用することはできません。
Azure Container Registry の作成
コンテナー レジストリを作成する前に、そのデプロイ先となるリソース グループが必要です。 リソース グループは、Azure リソースをまとめてデプロイして管理するための論理上のコレクションです。
az group create コマンドを使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループが eastus リージョンに作成されます。
az group create --name myResourceGroup --location eastus
リソース グループを作成したら、az acr create コマンドを使用して Azure Container Registry を作成します。 コンテナー レジストリ名は、Azure 内で一意にする必要があります。また、5 ~ 50 文字の英数字を含める必要があります。 <acrName>
を、レジストリの一意の名前に置き換えます。
az acr create --resource-group myResourceGroup --name <acrName> --sku Basic
mycontainerregistry082 という名前の新しい Azure Container Registry の出力の一部を次に示します。
{
"creationDate": "2020-07-16T21:54:47.297875+00:00",
"id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry082",
"location": "eastus",
"loginServer": "mycontainerregistry082.azurecr.io",
"name": "mycontainerregistry082",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"sku": {
"name": "Basic",
"tier": "Basic"
},
"status": null,
"storageAccount": null,
"tags": {},
"type": "Microsoft.ContainerRegistry/registries"
}
このチュートリアルの残りの部分では、この手順で選択したコンテナー レジストリ名のプレースホルダーとして <acrName>
を使用します。
コンテナー レジストリにサインインする
イメージをプッシュする前に、Azure Container Registry インスタンスにサインインする必要があります。 az acr login コマンドを使用して、操作を完了します。 コンテナー レジストリの作成時に選んだ一意名を指定する必要があります。
az acr login --name <acrName>
次に例を示します。
az acr login --name mycontainerregistry082
このコマンドは、完了すると Login Succeeded
を返します。
Login Succeeded
コンテナー イメージのタグ付け
Azure Container Registry などのプライベート レジストリにコンテナー イメージをプッシュするには、まず、レジストリのログイン サーバーのフル ネームでイメージにタグ付けする必要があります。
まず、Azure Container Registry のログイン サーバーのフル ネームを取得します。 次の az acr show コマンドを実行します。<acrName>
の部分は、作成したレジストリの名前に置き換えてください:
az acr show --name <acrName> --query loginServer --output table
たとえば、ご利用のレジストリに mycontainerregistry082 という名前を付けた場合は、次のようになります。
az acr show --name mycontainerregistry082 --query loginServer --output table
Result
------------------------
mycontainerregistry082.azurecr.io
次に、docker images コマンドを使用して、ローカル イメージを一覧表示します。
docker images
前のチュートリアルで作成した aci-tutorial-app イメージが、お使いのマシン上に存在する他のあらゆるイメージと共に表示されます。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
aci-tutorial-app latest 5c745774dfa9 39 minutes ago 68.1 MB
コンテナー レジストリのログイン サーバーで aci-tutorial-app イメージにタグを付けます。 また、イメージのバージョン番号を示す :v1
タグをイメージ名の末尾に追加します。 <acrLoginServer>
は、先ほど実行した az acr show コマンドの結果に置き換えてください。
docker tag aci-tutorial-app <acrLoginServer>/aci-tutorial-app:v1
docker images
を実行してタグ付け操作を確認します。
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
aci-tutorial-app latest 5c745774dfa9 39 minutes ago 68.1 MB
mycontainerregistry082.azurecr.io/aci-tutorial-app v1 5c745774dfa9 7 minutes ago 68.1 MB
Azure Container Registry へのイメージのプッシュ
プライベート レジストリの完全なログイン サーバー名で aci-tutorial-app イメージにタグ付けしたので、docker push コマンドを使ってレジストリにイメージをプッシュできます。 <acrLoginServer>
は、先行する手順で取得したログイン サーバーのフル ネームに置き換えてください。
docker push <acrLoginServer>/aci-tutorial-app:v1
インターネット接続に応じて、push
操作には数秒から数分かかります。出力は次のようになります:
docker push mycontainerregistry082.azurecr.io/aci-tutorial-app:v1
The push refers to a repository [mycontainerregistry082.azurecr.io/aci-tutorial-app]
3db9cac20d49: Pushed
13f653351004: Pushed
4cd158165f4d: Pushed
d8fbd47558a8: Pushed
44ab46125c35: Pushed
5bef08742407: Pushed
v1: digest: sha256:ed67fff971da47175856505585dcd92d1270c3b37543e8afd46014d328f05715 size: 1576
Azure Container Registry のイメージの一覧表示
先ほどプッシュしたイメージが確かに対象の Azure コンテナー レジストリに存在することを確認し、az acr repository list コマンドを使って、レジストリ内のイメージを一覧表示します。 <acrName>
を、コンテナー レジストリの名前に置き換えます。
az acr repository list --name <acrName> --output table
次に例を示します。
az acr repository list --name mycontainerregistry082 --output table
Result
----------------
aci-tutorial-app
特定のイメージの "タグ" を表示するには、az acr repository show-tags コマンドを使用します。
az acr repository show-tags --name <acrName> --repository aci-tutorial-app --output table
次の例のような出力が表示されます。
--------
v1
次のステップ
このチュートリアルでは、Azure Container Registry を Azure Container Instances で使用できるように準備し、コンテナー イメージをレジストリにプッシュしました。 次の手順を完了しました。
- Azure CLI による Azure Container Registry インスタンスの作成
- Azure Container Registry のコンテナー イメージのタグ付け
- Azure Container Registry へのイメージのアップロード
次のチュートリアルでは、Azure Container Instances を使用してコンテナーを Azure にデプロイする方法について学習します。