Azure コンテナー インスタンスに Docker イメージをデプロイする

完了

Azure コンテナー インスタンスは、オンデマンドで Docker イメージを読み込んで実行するサービスです。 Azure コンテナー インスタンス サービスを使用すると、Docker Hub や Azure Container Registry などのレジストリからイメージを取得できます。

組織では、Azure を使用して Web アプリを実行する必要があります。 そのため、Azure Container Registry にイメージを格納し、Azure コンテナー インスタンス サービスを使用してそのイメージを実行するのが合理的です。

このユニットでは、Docker イメージを Azure Container Registry にアップロードする方法を説明します。 その後、Azure コンテナー インスタンス サービスを使用してイメージを実行します。

Azure Container Registry を使用してコンテナーを格納する

Azure Container Registry は、Azure によって提供されるレジストリ ホスティング サービスです。 作成する Azure コンテナー レジストリ リソースはそれぞれ、一意の URL を持つ個別のレジストリです。 これらのレジストリは "プライベート" です。つまり、イメージのプッシュやプルには認証が必要です。 Azure Container Registry はクラウドで実行されるとともに、これによって同様のレベルのスケーラビリティと可用性が他の Azure サービスに提供されます。

Azure portal または Azure コマンド ライン インターフェイス (CLI) を使用してレジストリを作成できます。 Azure portal 内の Cloud Shell または Azure CLI のローカル インストールを使用できます。 レジストリを作成する前に、リソース グループを作成しておく必要があることに注意してください。 リソース グループを作成する場合は、最も近いリージョンを選択することをお勧めします。 この例では、リソース グループの名前は mygroup で、場所は米国西部です。

次のコマンドは、実行する必要はありません。 次の演習でそれを行います。

Note

コンテナーには一意の名前が必要です。 名前が既に使用されているかどうか、ここで確認できます。

az group create --name mygroup --location westus
az acr create --name <unique name> --resource-group mygroup --sku standard --admin-enabled true

さまざまな SKU で、さまざまなレベルのスケーラビリティとストレージが提供されます。

Azure Container Registry リポジトリはプライベートです。つまり、認証されていないアクセスはサポートされません。 Azure Container Registry リポジトリからイメージをプルするには、docker login コマンドを使用し、レジストリに対してログイン サーバーの URL を指定します。 Azure Container Registry のレジストリ用のログイン サーバー URL は、<registry_name>.azurecr.io という形式になります。

docker login myregistry.azurecr.io

Docker ログインでは、ユーザー名とパスワードの入力を求められます。 この情報を見つけるには、Azure portal に移動し、レジストリのアクセス キーを検索するか、以下のコマンドを実行します。

az acr credential show --name myregistry --resource-group mygroup

docker push コマンドを使用して、お使いのローカル コンピューターから Docker レジストリにイメージをプッシュします。 イメージをプッシュする前に、Docker レジストリで作成するリポジトリとタグを指定する、イメージのエイリアスを作成する必要があります。 リポジトリ名は、*<login_server>/<image_name>:<tag/> という形式にする必要があります。 この操作を実行するには、docker tag コマンドを使用します。 次の例では、reservationsystem イメージの別名を作成します。

docker tag reservationsystem myregistry.azurecr.io/reservationsystem:v2

docker image ls を実行する場合は、イメージに対して 2 つのエントリが表示されます。1 つ目は元の名前のもの、2 つ目は新しいエイリアスのものです。

tag コマンドを実行した後は、次のコマンドを使用して、Azure Container Registry レジストリにイメージをアップロードできます。

docker push myregistry.azurecr.io/reservationsystem:v2

次のコマンドを使用して、レジストリ内のリポジトリをリストし、イメージが正しくアップロードされていることを確認します。

az acr repository list --name myregistry --resource-group mygroup

acr repository show コマンドを使用して、レジストリのイメージをリストすることもできます。

az acr repository show --repository reservationsystem --name myregistry --resource-group mygroup

Note

リポジトリ内のイメージごとに 2 つ以上のタグが表示されます。 1 つのタグは、acr build コマンドで指定した値です (上記の例では、v1)。 その他は latest になります。 イメージをリビルドするたびに、Azure Container Registry で、最新バージョンのイメージ用のエイリアスとして、latest タグが自動的に作成されます。

Azure コンテナー インスタンスを使用してイメージを実行する

Azure コンテナー インスタンス サービスでは、Azure Container Registry からイメージを読み込み、Azure で実行することができます。

az container create コマンドを使用して、コンテナー インスタンスを作成し、イメージの実行を開始します。 registry-username および registry-password パラメーターで、レジストリのユーザー名とパスワードを指定します。 インスタンスには IP アドレスが割り当てられます。 この IP アドレスを使用して、インスタンスにアクセスします。 よりわかりやすいラベルを使用してインスタンスを参照したい場合は、必要に応じて、DNS 名を指定できます。 Azure コンテナー レジストリ サービス (azurecr.io) で、レジストリ (myregistry) を参照する URL としてイメージを指定することに注目してください。 Docker Hub またはその他のレジストリを使用する場合は、この URL をそのレジストリ内のイメージの URL に置き換えます。

az container create --resource-group mygroup --name myinstance --image myregistry.azurecr.io/myapp:latest --dns-name-label mydnsname --registry-username <username> --registry-password <password>

インスタンスは、指定した DNS ラベルに基づくドメイン名で Azure によってホストされます。 インスタンスの完全修飾ドメイン名を見つけるには、インスタンスの IP アドレスに対してクエリを実行します。

az container show --resource-group mygroup --name myinstance --query ipAddress.fqdn

Web ブラウザーを使用して、アプリケーションにアクセスできます。 このコマンドによって返される URL に移動できます。この方法については、次のユニットで説明します。