チュートリアル: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 には、macOSWindowsLinux 上で 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 コンテナー レジストリを作成します。 コンテナー レジストリ名は、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

次のような出力が表示されます。

Result
--------
v1

次の手順

このチュートリアルでは、Azure Container Registry を Azure Container Instances で使用できるように準備し、コンテナー イメージをレジストリにプッシュしました。 次の手順を完了しました。

  • Azure CLI による Azure Container Registry インスタンスの作成
  • Azure Container Registry のコンテナー イメージのタグ付け
  • Azure Container Registry へのイメージのアップロード

次のチュートリアルでは、Azure Container Instances を使用してコンテナーを Azure にデプロイする方法について学習します。