Azure でカスタム コンテナーを実行するRun a custom container in Azure

Azure App Service は、IIS 上で稼働する ASP.NET や IIS 上で稼働する Node.js など、Windows 上の定義済みのアプリケーション スタックを提供します。Azure App Service provides pre-defined application stacks on Windows like ASP.NET or Node.js, running on IIS. 事前構成済みの Windows コンテナー (プレビュー) 環境によって、オペレーティング システムは、管理アクセスやソフトウェアのインストール、グローバル アセンブリ キャッシュへの変更などができないようにロックされます。The preconfigured Windows container (preview) environment locks down the operating system from administrative access, software installations, changes to the global assembly cache, and so on. 詳細については、「Azure App Service におけるオペレーティング システムの機能」を参照してください。For more information, see Operating system functionality on Azure App Service. アプリケーションから利用すべき領域が事前構成済みの環境を超える場合は、カスタムの Windows コンテナーをデプロイすることで対応できます。If your application requires more access than the preconfigured environment allows, you can deploy a custom Windows container instead.

このクイックスタートでは、Visual Studio から Docker Hub に、Windows イメージで ASP.NET アプリをデプロイする方法について説明します。This quickstart shows how to deploy an ASP.NET app, in a Windows image, to Docker Hub from Visual Studio. アプリは、Azure App Service のカスタム コンテナーで実行します。You run the app in a custom container in Azure App Service.

注意

Azure App Service on Windows コンテナーは、プレビュー段階にあります。App Service on Windows containers is in preview.

前提条件Prerequisites

このチュートリアルを完了するには、以下が必要です。To complete this tutorial:

ASP.NET Web アプリを作成するCreate an ASP.NET web app

次の手順に従って ASP.NET Web アプリを作成します。Create an ASP.NET web app by following these steps:

  1. Visual Studio を開き、 [新しいプロジェクトの作成] を選択します。Open Visual Studio and then select Create a new project.

  2. [新しいプロジェクトの作成] で、C# の [ASP.NET Web アプリケーション (.NET Framework)] を選択し、 [次へ] を選択します。In Create a new project, find and choose ASP.NET Web Application (.NET Framework) for C#, then select Next.

  3. [新しいプロジェクトの構成] で、アプリケーションに myfirstazurewebapp という名前を付け、 [作成] を選択します。In Configure your new project, name the application myfirstazurewebapp, and then select Create.

    Web アプリ プロジェクトを構成する

  4. 任意の種類の ASP.NET Web アプリを Azure にデプロイできます。You can deploy any type of ASP.NET web app to Azure. このクイックスタートでは、 [MVC] テンプレートを選択します。For this quickstart, choose the MVC template.

  5. [Docker サポート] を選択し、認証が [認証なし] に設定されていることを確認します。Select Docker support, and make sure authentication is set to No Authentication. [作成] を選択しますSelect Create.

    ASP.NET Web アプリケーションを作成する

  6. Dockerfile ファイルが自動的に開かない場合は、ソリューション エクスプローラーから開きます。If the Dockerfile file isn't opened automatically, open it from the Solution Explorer.

  7. サポートされている親イメージが必要です。You need a supported parent image. FROM 行を次のコードに置き換えることで親イメージを変更し、ファイルを保存します。Change the parent image by replacing the FROM line with the following code and save the file:

    FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
    
  8. Visual Studio のメニューから [デバッグ] > [デバッグなしで開始] の順に選択して、Web アプリをローカルで実行します。From the Visual Studio menu, select Debug > Start Without Debugging to run the web app locally.

    アプリをローカルで実行する

Docker Hub に発行するPublish to Docker Hub

  1. ソリューション エクスプローラーmyfirstazurewebapp プロジェクトを右クリックし、 [発行] を選択します。In Solution Explorer, right-click the myfirstazurewebapp project and select Publish.

  2. App Service を選択し、 [発行] を選択します。Choose App Service and then select Publish.

  3. [発行先を選択][コンテナー レジストリ][Docker Hub] を選択し、 [発行] をクリックします。In Pick a publish target, select Container Registry and Docker Hub, and then click Publish.

    プロジェクトの概要ページから発行する

  4. Docker Hub アカウントの資格情報を指定し、 [保存] を選択します。Supply your Docker Hub account credentials and select Save.

    デプロイが完了するまで待ちます。Wait for the deployment to complete. [発行] ページに、後で使用するリポジトリ名が表示されるようになります。The Publish page now shows the repository name to use later.

    プロジェクトの概要ページから発行する

  5. 後で使用するのでこのリポジトリ名をコピーします。Copy this repository name for later.

Windows コンテナー アプリの作成Create a Windows container app

  1. Azure portal にサインインします。Sign in to the Azure portal.

  2. Azure portal の左上隅にある [リソースの作成] を選択します。Choose Create a resource in the upper left-hand corner of the Azure portal.

  3. Azure Marketplace リソース一覧の上にある検索ボックスで、 [Web App for Containers] を検索して、 [作成] を選択します。In the search box above the list of Azure Marketplace resources, search for Web App for Containers, and select Create.

  4. [Web App Create](Web アプリの作成) で、サブスクリプションとリソース グループを選択します。In Web App Create, choose your subscription and a Resource Group. 必要な場合は、新しいリソース グループを作成できます。You can create a new resource group if needed.

  5. アプリ名 (例: win-container-demo) を入力し、 [オペレーティング システム][Windows] を選択します。Provide an app name, such as win-container-demo and choose Windows for Operating System. Docker を選択して続行します。Select Next: Docker to continue.

    Web App for Containers を作成する

  6. [イメージのソース][Docker Hub] を選択し、 [イメージとタグ] に、「Docker Hub に発行する」でコピーしたリポジトリ名を入力します。For Image Source, choose Docker Hub and for Image and tag, enter the repository name you copied in Publish to Docker Hub.

    Web App for Containers を構成する

    Azure Container Registry や他のプライベート リポジトリなど、どこか他の場所に目的の Web アプリケーションのカスタム イメージがある場合は、ここで構成することができます。If you have a custom image elsewhere for your web application, such as in Azure Container Registry or in any other private repository, you can configure it here.

  7. [確認と作成][作成] の順に選択して、必要なリソースが Azure によって作成されるまで待ちます。Select Review and Create and then Create and wait for Azure to create the required resources.

コンテナー アプリにブラウザーでアクセスするBrowse to the container app

Azure の処理が完了すると、通知ボックスが表示されます。When the Azure operation is complete, a notification box is displayed.

デプロイメント成功

  1. [リソースに移動] をクリックします。Click Go to resource.

  2. このリソースの概要で、 [URL] の横にあるリンクに移動します。In the overview of this resource, follow the link next to URL.

新しいブラウザー ページが開いて次のページが表示されます。A new browser page opens to the following page:

Windows コンテナー アプリ (起動中)

数分待ってから再試行すると、既定の ASP.NET ホーム ページが表示されます。Wait a few minutes and try again, until you get the default ASP.NET home page:

Windows コンテナー アプリ (実行中)

お疲れさまでした。Congratulations! 初めてのカスタム Windows コンテナーを Azure App Service で実行することができました。You're running your first custom Windows container in Azure App Service.

コンテナーの起動ログの表示See container start-up logs

Windows コンテナーが読み込まれるまでにしばらく時間がかかる場合があります。It may take some time for the Windows container to load. 進行状況を確認するには、 <app_name> をアプリの名前に置き換えて次の URL に移動します。To see the progress, navigate to the following URL by replacing <app_name> with the name of your app.

https://<app_name>.scm.azurewebsites.net/api/logstream

次のようなログがストリーム配信されます。The streamed logs looks like this:

2018-07-27T12:03:11  Welcome, you are now connected to log-streaming service.
27/07/2018 12:04:10.978 INFO - Site: win-container-demo - Start container succeeded. Container: facbf6cb214de86e58557a6d073396f640bbe2fdec88f8368695c8d1331fc94b
27/07/2018 12:04:16.767 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.017 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.020 INFO - Site: win-container-demo - Container started successfully

ローカルで更新して再デプロイするUpdate locally and redeploy

  1. Visual Studio のソリューション エクスプローラーから、 [表示] > [ホーム] > [Index.cshtml] の順に開きます。In Visual Studio, in Solution Explorer, open Views > Home > Index.cshtml.

  2. 上部の <div class="jumbotron"> HTML タグを検索し、要素全体を次のコードに置き換えます。Find the <div class="jumbotron"> HTML tag near the top, and replace the entire element with the following code:

    <div class="jumbotron">
        <h1>ASP.NET in Azure!</h1>
        <p class="lead">This is a simple app that we've built that demonstrates how to deploy a .NET app to Azure App Service.</p>
    </div>
    
  3. Azure に再デプロイするには、ソリューション エクスプローラーmyfirstazurewebapp プロジェクトを右クリックし、 [発行] を選択します。To redeploy to Azure, right-click the myfirstazurewebapp project in Solution Explorer and choose Publish.

  4. 発行ページで [発行] を選択し、発行が完了するまで待ちます。On the publish page, select Publish and wait for publishing to complete.

  5. App Service に Docker Hub から新しいイメージをプルするよう指示するには、アプリを再起動します。To tell App Service to pull in the new image from Docker Hub, restart the app. ポータルでアプリ ページに戻り、 [再起動] > [はい] をクリックします。Back in the app page in the portal, click Restart > Yes.

    Azure で Web アプリを再起動する

再びコンテナー アプリにブラウザーでアクセスします。Browse to the container app again. Web ページを更新すると、アプリは最初に "起動" ページに戻った後、数分すると更新された Web ページが再び表示されます。As you refresh the webpage, the app should revert to the "Starting up" page at first, then display the updated webpage again after a few minutes.

Azure での更新された Web アプリ

次のステップNext steps

または、他のリソースを参照してください。Or, check out other resources:

App Service on Linux は、事前定義済みのアプリケーション スタックを Linux 上で提供し、.NET、PHP、Node.js などの言語をサポートします。App Service on Linux provides pre-defined application stacks on Linux with support for languages such as .NET, PHP, Node.js and others. まだ Azure で定義されていないアプリケーション スタックで Web アプリを実行する場合にも、カスタム Docker イメージを使用できます。You can also use a custom Docker image to run your web app on an application stack that is not already defined in Azure. このクイックスタートでは、Azure Container Registry (ACR) から App Service にイメージをデプロイする方法について説明します。This quickstart shows you how to deploy an image from an Azure Container Registry (ACR) to App Service.

前提条件Prerequisites

イメージを作成するCreate an image

このクイックスタートを完了するには、Azure Container Registry に格納されている適切な Web アプリ イメージが必要です。To complete this quickstart, you will need a suitable web app image stored in an Azure Container Registry. クイックスタート: Azure portal を使用したプライベート コンテナー レジストリの作成」の手順に従ってください。ただし、使用するイメージは、hello-world ではなく mcr.microsoft.com/azuredocs/go となります。Follow the instructions in Quickstart: Create a private container registry using the Azure portal, but use the mcr.microsoft.com/azuredocs/go image instead of the hello-world image. Azure Samples リポジトリにサンプル Dockerfile があります。ご参考ください。For reference, the sample Dockerfile is found in Azure Samples repo.

重要

コンテナー レジストリを作成するときは必ず、[管理者ユーザー] オプションを [有効] に設定してください。Be sure to set the Admin User option to Enable when you create the container registry. Azure portal のレジストリ ページの [アクセス キー] セクションから設定することもできます。You can also set it from the Access keys section of your registry page in the Azure portal. App Service にアクセスするためには、この設定が必要となります。This setting is required for App Service access.

サインインSign in

次に、VS Code を起動し、App Service 拡張機能を使用して Azure アカウントにログインします。Next, launch VS Code and log into your Azure account using the App Service extension. そのためには、アクティビティ バーで Azure ロゴを選択し、[APP SERVICE] エクスプローラーに移動して [Azure にサインイン] を選択し、画面の指示に従います。To do this, select the Azure logo in the Activity Bar, navigate to the APP SERVICE explorer, then select Sign in to Azure and follow the instructions.

Azure にサインイン

前提条件を確認するCheck prerequisites

それでは、すべての前提条件がインストールされ、適切に構成されていることを確認しましょう。Now you can check whether you have all the prerequisites installed and configured properly.

VS Code では、ステータス バーに自分の Azure メール アドレスが、APP SERVICE エクスプローラーに自分のサブスクリプションが表示されます。In VS Code, you should see your Azure email address in the Status Bar and your subscription in the APP SERVICE explorer.

次に、Docker がインストールされ、実行されていることを確認します。Next, verify that you have Docker installed and running. 次のコマンドは、Docker が実行されている場合に、そのバージョンを表示するものです。The following command will display the Docker version if it is running.

docker --version

最後に、Azure Container Registry が接続されていることを確認します。Finally, ensure that your Azure Container Registry is connected. そのためには、アクティビティ バーで Docker ロゴを選択し、[レジストリ] に移動します。To do this, select the Docker logo in the Activity Bar, then navigate to REGISTRIES.

スクリーンショットは、[Azure] が展開された [レジストリ] の値として、ファイル名拡張子 .io を持つファイルを示しています。

Azure App Service にイメージをデプロイするDeploy the image to Azure App Service

すべての構成が済んだら、Docker 拡張機能エクスプローラーから直接 Azure App Service にイメージをデプロイできます。Now that everything is configured, you can deploy your image to Azure App Service directly from the Docker extension explorer.

DOCKER エクスプローラーで [レジストリ] ノードからイメージを見つけて展開し、そのタグを表示します。Find the image under the Registries node in the DOCKER explorer, and expand it to show its tags. タグを右クリックし、[Deploy Image to Azure App Service](Azure App Service にイメージをデプロイ) を選択します。Right-click a tag and then select Deploy Image to Azure App Service.

そこからプロンプトに従って、サブスクリプション、グローバルに一意なアプリ名、リソース グループ、App Service プランを選択します。From here, follow the prompts to choose a subscription, a globally unique app name, a Resource Group, and an App Service Plan. 価格レベルには [B1 Basic] を選択し、リージョンを選択してください。Choose B1 Basic for the pricing tier, and a region.

デプロイ後は、http://<app name>.azurewebsites.net でアプリにアクセスできます。After deployment, your app is available at http://<app name>.azurewebsites.net.

リソース グループは、Azure で利用するすべてのアプリケーションのリソースをまとめた名前付きのコレクションです。A Resource Group is a named collection of all your application's resources in Azure. たとえば、Web サイトやデータベース、Azure 関数への参照をリソース グループに含めることができます。For example, a Resource Group can contain a reference to a website, a database, and an Azure Function.

Web サイトをホストするために使用される物理リソースは、App Service プランによって定義されます。An App Service Plan defines the physical resources that will be used to host your website. このクイックスタートでは、Linux インフラストラクチャ上の Basic ホスティング プランを使用します。つまりサイトは Linux マシン上で、他の Web サイトと一緒にホストされます。This quickstart uses a Basic hosting plan on Linux infrastructure, which means the site will be hosted on a Linux machine alongside other websites. Basic プランから開始すれば、マシン上で自分のサイトだけが実行されるように、Azure portal を使用してスケールアップすることができます。If you start with the Basic plan, you can use the Azure portal to scale up so that yours is the only site running on a machine.

Web サイトを閲覧するBrowse the website

デプロイ中は、[出力] パネルが開いてデプロイ操作の状態が表示されます。The Output panel will open during deployment to indicate the status of the operation. その操作が完了したら、APP SERVICE エクスプローラーで作成したアプリを見つけて右クリックし、[Web サイトの参照] を選択して、ブラウザーでサイトを開きます。When the operation completes, find the app you created in the APP SERVICE explorer, right-click it, then select Browse Website to open the site in your browser.

次のステップNext steps

おめでとうございます。このクイックスタートを正常に完了できました。Congratulations, you've successfully completed this quickstart!

次は、他の Azure 拡張機能もチェックしてみましょう。Next, check out the other Azure extensions.

または、Azure Tools 拡張機能パックをインストールして、これらすべてを入手しましょう。Or get them all by installing the Azure Tools extension pack.

他のリソースを確認してください。Check out other resources: