このATAプロジェクトでは、AzureのDockerがどのように機能するかを垣間見ることができます。このAzureDockerチュートリアルでは、MicrosoftによるAzure Container Instance(ACI)サービスについて学習します。
Azure Container Instanceは、AzureDockerホスティングを介してホストされるKubernetesクラスターです。これにより、任意のDockerイメージ(WindowsおよびLinux)をデプロイし、コンテナーとして実行できます。各AzureDockerコンテナーは、独自に割り当てられたCPUとメモリを使用して、スタンドアロンコンテナーとして実行されます。
このプロジェクトでは、AzureパブリッククラウドでのMicrosoftのサンプルASP.NETコンテナーイメージに基づいて、最初のAzureコンテナーインスタンスをデプロイして実行する方法を学習します。
このプロジェクトが終了するまでに、AzureContainerInstanceサービスによってホストされるDockerコンテナーでASP.NETWebサイトが実行されるようになります。
このAzureDockerチュートリアルを最大限に活用するには、次のものが必要です。
- DockerDesktopがインストールされているローカルのWindows10クライアント。
- MicrosoftAzureアカウント
- コンテナーをAzureContainerRegistryにデプロイするためのアクセス許可を持つAzureアカウントへのアクセス
- WindowsAzureCLIがインストールされています。コマンドラインから学習します。
- コンテナとDockerの初心者の理解。
- 登録済みのDockerID。
このAzureDockerチュートリアルで選択した例が気に入らない場合は、DockerHubでいつでも別のコンテナーイメージを使用できます。
面倒なことはせずに、このプロジェクトの構築に取り掛かりましょう!
Dockerコンテナの実行
後で何かが機能していないときのフラストレーションを避けるために、常に最初にDockerエンジンが実行されていることを検証してください。これを行うには、コマンドプロンプトまたはPowerShellセッションを開き、docker info
を実行します。 。
受け取るべき出力の種類を以下に示します。
Dockerコンテナーの起動を検証するには、docker run hello-world
を実行します。 。舞台裏ではdocker
コマンドはいくつかのステップを実行します:
- hello-wordというコンテナを探します Windows10コンピューターでローカルに。
- 見つからない場合は、パブリックDocker Hubリポジトリにアクセスして、hello-worldという名前のコンテナの最新バージョンを探します。
- コンテナが見つかると、DockerHubリポジトリからダウンロードされます。
- ダウンロードされると、コンテナが起動され、コンテナが使用しているイメージ内に提供されている起動手順が実行されます。
以下に出力例を示します。
Dockerコンテナーをダウンロードして実行する方法がわかったので、このプロジェクト内で作業するコンテナーをダウンロードして実行します。このDockerコンテナーは、ASP.NetCoreWebアプリイメージです。
このAzureDockerチュートリアルのイメージをダウンロードするには、次のコマンドを実行します。
> docker run --name aspnetcore_sample --rm -it -p 8000:80 mcr.microsoft.com/dotnet/core/samples:aspnetapp
このコマンドは次のことを行います:
- Dockerイメージはローカルで利用できないため、Dockerは aspnetappというコンテナをダウンロードします。 mcr.microsoft.comにあるMicrosoftがホストする別のパブリックコンテナレジストリから dotnet / core / samples ディレクトリ。 mcr.microsoft.comコンテナレジストリはパブリックDockerHubに似ています ただし、Microsoftによって保守されており、Microsoftコンテナイメージのみをホストします。
- ローカルコンピューターでコンテナーを実行します。
- (-p 8000:80)–コンテナのリスニングTCPポート80をTCPポート8000にマップします。これにより、ポート8000でローカルにWebアプリにアクセスできます。
- (-it)–コンテナはインタラクティブに起動されます。つまり、起動するとすぐにコンソールに移動します。
- (
—rm
)–コンテナが停止すると、削除されます。
期待できる出力を以下に示します。
6.ブラウザから、 http:// localhost:8000 にアクセスして、この実行中のコンテナアプリケーションに接続します。 。 ASP.NetサンプルWebアプリが表示されるはずです
Azure Container Registry(ACR)インスタンスの作成
ASP.NETコンテナーをローカルコンピューターにダウンロードしたら、それをACIを使用してAzure Dockerホスティングに移行し、このコンテナーをAzureで実行します。これを行うには、デモコンテナーをAzure Container Registry(ACR)にプッシュします。 ACRは、Azure内でDockerコンテナーを直接デプロイして実行できるようにするサービスです。
- Azureポータルにログインします。
- 上部のターミナルアイコンをクリックして、AzureCloudShellを起動します。
3.以下に示すようにBashシェルを選択していることを確認してください。
4. Azureリソースグループを作成して、az group create
を使用してACRのインスタンスを配置します 以下のコマンド。
> az group create --name <RGname> --location <Azure Region of choice>
5.次に、az acr create
を使用して、リソースグループ内にACRを作成します。 指図。以下に、admin-enabled
を使用して基本SKUでACRを作成する例を示します。 パラメータをtrue
に設定 。これはtrue
に設定されています 後でリソース管理を実行できるためです。
> az acr create --resource-group <RGname> --name <ACRname> --sku Basic
--admin-enabled true
完了すると、リソースグループ内でACRインスタンスが実行されているはずです。 Azure Dockerホスティングが救いの手を差し伸べます!
ACRインスタンスへのローカル接続
次に、Azure Cloud ShellからローカルのWindowsコンピューターに移動して、セットアップを完了する必要があります。
- ローカルマシンで、PowerShellまたは管理者権限を持つコマンドプロンプトを起動します。 PowerShellを使用します。
-
az login
を実行して、AzureCLIでAzureを認証します 指示に従ってクレデンシャルを提供します。 - 認証に成功すると、認証したばかりのユーザーを示すJSON出力が表示されます。
4.次に、as acr login
を使用して、AzureCloudShellで作成したACRインスタンスに対して認証します。 以下のコマンドを使用してコマンドを実行します。以下に、 nopacr1というACRインスタンスに接続していることがわかります。 、Azureリソースグループ NOPRG 。
> az acr login --name <ACR-Name> --resource-group <RG Name>
Dockerイメージタグの更新
これで、ローカルDockerイメージをAzureDockerホスティングまたはACIのACRインスタンスにプッシュする準備が整いました。ただし、最初にACRの依存関係を満たす必要があります。 ACRインスタンスにプッシュされるすべてのDockerイメージには、イメージ名にACRインスタンスの名前が含まれている必要があります。
- コマンド
docker images
を使用して、DockerイメージID番号またはイメージ名を検索します 。
2. docker tag
を実行して、DockerイメージのDockerイメージタグを更新します。 以下に示すようなコマンド。命名規則に従っている場合は、 NOPACR1のACR名を使用してください。 タグをnopacr1.azurecr.io。として定義します。 画像自体には、 dotnetsampleという名前を使用します 。
> docker tag mcr.microsoft.com/dotnet/core/samples:aspnetapp <ACRName>.azurecr.io/<imagenameofchoice>
3. docker images
を使用してタグが適用されていることを確認します もう一度コマンドします。これで、タグが更新されたことがわかります。
DockerイメージをACRインスタンスにアップロードして検証する
- 次に、
docker push
を使用してローカルイメージをACRインスタンスにアップロードします 以下に示すコマンドは、ACRインスタンスが配置されているDNS名ラベルを提供します。
> docker push <ACRName>.azurecr.io/<nameofimage>
2.アップロードしたら、Azureポータルを使用してすべてのサービスに移動し、ACRインスタンスへのプッシュが正常に行われたことを確認します。 —>Azureコンテナレジストリ 以前に作成したACRインスタンスを選択します。
3.サービスの下の左側にあるブレードメニュー セクションで、リポジトリをクリックします 。 DockerイメージがACRインスタンスをプッシュしただけで、ここに表示されます。
4.画像をクリックすると、そのバージョンとその他の役立つ情報が表示されます。
Azureコンテナインスタンス(ACI)の実行
これで、ACRインスタンスが作成され、Dockerコンテナイメージに参照としてACR名がタグ付けされ、イメージがACRインスタンスにプッシュされました。次に、Azure Container Instance(ACI)を使用して、ACRインスタンスに格納されているDockerイメージを実行します。
- 前の手順に進み、最新の横にある[…]をクリックします 、[インスタンスの実行]を選択します 。これにより、コンテナインスタンスの作成が開きます。 ブレード。
2.コンテナインスタンスの作成のフィールドに入力します 次の情報を使用して下のボックス:
- コンテナ名 –この実行中のコンテナに使用する任意の名前
- OSタイプ – Linux(これはソースコンテナによって異なります。このプロジェクトで同じコンテナを使用している場合、これはWindowsである可能性があります。)
- サブスクリプション –Azureサブスクリプション
- リソースグループ –コンテナインスタンスを追加する既存または新規のAzureリソースグループ
- 場所 –リソースグループに基づく
このAzureDockerチュートリアルASP.NETコンテナーでは、他のすべての設定を変更しないでおくことができます。実稼働環境では、実行中のコンテナーによっては、これらの設定を変更する必要がある場合があります。
3. OKを押します Containerインスタンスを作成します。
4.コンテナインスタンスがデプロイされると、次の例のようなページが表示されます。
5.展開が完了したら、すべてのサービスに移動して、ポータルでACIを開きます。 —>コンテナインスタンス 。ここで、作成したばかりのAzure Container Instance(ACI)を参照します。以下に示すインスタンスが表示されます。
6.右上隅のIPアドレスをコピーして、Webブラウザに貼り付けます。サンプルのASP.NETWebアプリは、Azure Container Instance(ACI)から読み込まれ、次のようなWebページが表示されます。
このコンテナを使い終わったら、az container delete
を使用できます。 コンテナを削除するコマンド。
このAzureDockerチュートリアルでは、ACIとAzureがDockerイメージを格納する方法についての基本的な理解が得られたはずです。