クイック スタート: Visual Studio での Docker

Visual Studio を使用すると、コンテナー化された ASP.NET Core アプリを簡単にビルド、デバッグ、および実行して、Azure Container Registry、Docker Hub、Azure App Service、または独自のコンテナー レジストリに発行することができます。 この記事では、Azure Container Registry に発行します。

必須コンポーネント

インストールとセットアップ

Docker をインストールするには、まず、「Docker Desktop for Windows: What to know before you install」 (Docker Desktop for Windows: インストール前に知っておくべきこと) の情報を確認します。 次に、Docker Desktop をインストールします。

Docker コンテナーにプロジェクトを追加する

  1. Visual Studio のメニューで、 [ファイル]、[新規作成]、[プロジェクト] の順に選択します。

  2. [新しいプロジェクト] ダイアログ ボックスの [テンプレート] セクションで、 [Visual C#]、[Web] の順に選択します。

  3. [ASP.NET Core Web アプリケーション] を選択します。または、.NET Core ではなく .NET Framework を使用する場合は、 [ASP.NET Web アプリケーション] を選択します。

  4. 新しいアプリケーションに名前を設定 (または、既定の名前をそのまま使用) して、 [OK] を選択します。

  5. [Web アプリケーション] を選択します。

  6. [Docker サポートを有効にする] チェック ボックスをオンにします。

    [Docker サポートを有効にする] チェックボックスのスクリーンショット。

    このスクリーンショットには .NET Core が表示されています。.NET Framework を使用している場合は、少し異なります。

  7. コンテナーの種類 (Windows または Linux) を選択し、 [OK] をクリックします。

Dockerfile の概要

Dockerfile (Docker の最終イメージを作成するためのレシピ) は、プロジェクトで作成されます。 その中に含まれるコマンドの詳細については、「Dockerfile reference」 (Dockerfile リファレンス) を参照してください。

FROM mcr.microsoft.com/dotnet/aspnet:2.1 AS base
WORKDIR /app
EXPOSE 59518
EXPOSE 44364

FROM mcr.microsoft.com/dotnet/sdk:2.1 AS build
WORKDIR /src
COPY HelloDockerTools/HelloDockerTools.csproj HelloDockerTools/
RUN dotnet restore HelloDockerTools/HelloDockerTools.csproj
COPY . .
WORKDIR /src/HelloDockerTools
RUN dotnet build HelloDockerTools.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish HelloDockerTools.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "HelloDockerTools.dll"]

前の Dockerfile は、microsoft/aspnetcore イメージに基づいており、プロジェクトをビルドしてコンテナーに追加することで基本イメージを変更するための手順が含まれています。 .NET Framework を使用している場合、基本イメージは異なります。

新しいプロジェクト ダイアログの [Configure for HTTPS](HTTPS 用に構成する) チェック ボックスがオンになっている場合、Dockerfile は 2 つのポートを公開します。 1 つのポートは HTTP トラフィック用、もう 1 つのポートは HTTPS 用に使用されます。 チェック ボックスがオンになっていない場合は、HTTP トラフィック用に単一のポート (80) が公開されます。

デバッグ

ツールバーのデバッグ ドロップダウンから [Docker] を選択し、アプリのデバッグを開始します。 証明書の信頼を求めるメッセージが表示される場合があります。続行するには、証明書を信頼することを選びます。

出力 ウィンドウには、行われているアクションの内容が表示されます。

[ツール] メニュー、[NuGet パッケージ マネージャー]、 [パッケージ マネージャー コンソール] の順に選択して、 [パッケージ マネージャー コンソール] (PMC) を開きます。

アプリの結果の Docker イメージは、dev としてタグ付けされます。 イメージは、microsoft/dotnet 基本イメージの 2.1-aspnetcore-runtime タグに基づいています。 パッケージ マネージャー コンソール (PMC) ウィンドウで docker images コマンドを実行します。 コンピューター上のイメージが表示されます。

REPOSITORY        TAG                     IMAGE ID      CREATED         SIZE
hellodockertools  dev                     d72ce0f1dfe7  30 seconds ago  255MB
microsoft/dotnet  2.1-aspnetcore-runtime  fcc3887985bb  6 days ago      255MB

注意

[デバッグ] 構成ではボリュームのマウントを使用して、反復編集とデバッグ操作を提供するため、dev イメージにはアプリのバイナリやその他のコンテンツは含まれません。 すべてのコンテンツを含む実稼働イメージを作成するには、 [リリース] 構成を使用します。

PMC で docker ps コマンドを実行します。 アプリがコンテナーを使用して実行されていることがわかります。

CONTAINER ID        IMAGE                  COMMAND                   CREATED             STATUS              PORTS                   NAMES
baf9a678c88d        hellodockertools:dev   "C:\\remote_debugge..."   21 seconds ago      Up 19 seconds       0.0.0.0:37630->80/tcp   dockercompose4642749010770307127_hellodockertools_1

Docker イメージの発行

アプリの開発とデバッグのサイクルが完了すると、アプリの実稼働イメージを作成できます。

  1. 構成ドロップダウンを [リリース] に変更し、アプリを構築します。

  2. ソリューション エクスプローラー で対象のプロジェクトを右クリックし、 [発行] を選択します。

  3. 発行先ダイアログで [コンテナー レジストリ] タブを選択します。

  4. [新しい Azure コンテナー レジストリを作成する] を選択し、 [発行] をクリックします。

  5. [新しい Azure コンテナー レジストリを作成する] で、目的の値を入力します。

    設定 推奨値 説明
    DNS プレフィックス グローバルに一意の名前 コンテナー レジストリを一意に識別する名前。
    サブスクリプション サブスクリプションの選択 使用する Azure サブスクリプション。
    リソース グループ myResourceGroup コンテナー レジストリを作成するリソース グループの名前。 新しいリソース グループを作成する場合は、 [新規] を選択します。
    SKU 標準 コンテナー レジストリのサービス層
    レジストリの場所 近くの場所 [地域] で、自分に近いか、またはコンテナー レジストリを使用する他のサービスに近い場所を選択します。

    Visual Studio の Azure Container Registry を作成するダイアログのスクリーンショット。

  6. [作成]

次の手順

これでレジストリからコンテナーを、Azure Container Instances などの Docker イメージを実行できるホストにプルできるようになりました。

Visual Studio を使用すると、コンテナー化された .NET、ASP.NET、および ASP.NET Core アプリを簡単にビルド、デバッグ、および実行して、Azure Container Registry、Docker Hub、Azure App Service、または独自のコンテナー レジストリに発行することができます。 この記事では、ASP.NET Core アプリを Azure Container Registry に発行します。

必須コンポーネント

インストールとセットアップ

Docker をインストールするには、まず、「Docker Desktop for Windows: What to know before you install」 (Docker Desktop for Windows: インストール前に知っておくべきこと) の情報を確認します。 次に、Docker Desktop をインストールします。

Docker コンテナーにプロジェクトを追加する

  1. [ASP.NET Core Web アプリ] テンプレートを使用して新しいプロジェクトを作成します。または、.NET Core ではなく .NET Framework を使用する場合は、 [ASP.NET Web アプリケーション (.NET Framework)] を選択します。

  2. [新しい Web アプリケーションの作成] 画面で、 [Docker サポートを有効にします] チェック ボックスがオンになっていることを確認します。

    [Docker サポートを有効にする] チェックボックスのスクリーンショット。

    このスクリーンショットには .NET Core が表示されています。 .NET Framework を使用している場合は、少し異なります。

  3. コンテナーの種類 (Windows または Linux) を選択し、 [作成] をクリックします。

Dockerfile の概要

Dockerfile (Docker の最終イメージを作成するためのレシピ) は、プロジェクトで作成されます。 その中に含まれるコマンドの詳細については、「Dockerfile reference」 (Dockerfile リファレンス) を参照してください。

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

前の Dockerfile は、microsoft/aspnetcore イメージに基づいており、プロジェクトをビルドしてコンテナーに追加することで基本イメージを変更するための手順が含まれています。 .NET Framework を使用している場合、基本イメージは異なります。

新しいプロジェクト ダイアログの [Configure for HTTPS](HTTPS 用に構成する) チェック ボックスがオンになっている場合、Dockerfile は 2 つのポートを公開します。 1 つのポートは HTTP トラフィック用、もう 1 つのポートは HTTPS 用に使用されます。 チェック ボックスがオンになっていない場合は、HTTP トラフィック用に単一のポート (80) が公開されます。

デバッグ

ツールバーのデバッグ ドロップダウンから [Docker] を選択し、アプリのデバッグを開始します。 証明書の信頼を求めるメッセージが表示される場合があります。続行するには、証明書を信頼することを選びます。

[出力] ウィンドウの [コンテナー ツール] オプションに、実行されているアクションの内容が表示されます。 初めての場合、基本イメージのダウンロードにしばらく時間がかかる場合がありますが、以降の実行でははるかに高速になります。

注意

デバッグ用にポートを変更する必要がある場合は、launchSettings.json ファイルで行うことができます。 コンテナーの起動設定に関する記事を参照してください。

コンテナー ウィンドウ

Visual Studio 2019 バージョン 16.4 以降をお持ちの場合は、 [コンテナー] ウィンドウを使用して、ご利用のコンピューター上で実行中のコンテナー、および使用可能なイメージを確認できます。

IDE の [検索] ボックスを使用して (Ctrl+Q を押して使用)、 [コンテナー] ウィンドウを開き、container を入力し、一覧から [コンテナー] ウィンドウを選択します。

[コンテナー] ウィンドウをエディターの下などの便利な場所に配置するには、ウィンドウを移動してウィンドウ配置ガイドに従います。

ウィンドウで、ご利用のコンテナーを見つけ、各タブをステップ実行して、環境変数、ポート マッピング、ログ、およびファイル システムを表示します。

[コンテナー] ウィンドウのスクリーンショット。

詳細については、「コンテナー ウィンドウを使用する」を参照してください。

Docker イメージの発行

アプリの開発とデバッグのサイクルが完了すると、アプリの実稼働イメージを作成できます。

  1. 構成ドロップダウンを [リリース] に変更し、アプリを構築します。

  2. ソリューション エクスプローラー で対象のプロジェクトを右クリックし、 [発行] を選択します。

  3. [発行] ダイアログで [Docker コンテナー レジストリ] タブを選択します。

    発行ダイアログのスクリーンショット - [Docker コンテナー レジストリ] を選択する。

  4. [新しい Azure Container Registry を作成する] を選択します。

    発行ダイアログのスクリーンショット - [新しい Azure Container Registry を作成する] を選択する。

  5. [新しい Azure コンテナー レジストリを作成する] で、目的の値を入力します。

    設定 推奨値 説明
    DNS プレフィックス グローバルに一意の名前 コンテナー レジストリを一意に識別する名前。
    サブスクリプション サブスクリプションの選択 使用する Azure サブスクリプション。
    リソース グループ myResourceGroup コンテナー レジストリを作成するリソース グループの名前。 新しいリソース グループを作成する場合は、 [新規] を選択します。
    SKU 標準 コンテナー レジストリのサービス層
    レジストリの場所 近くの場所 [地域] で、自分に近いか、またはコンテナー レジストリを使用する他のサービスに近い場所を選択します。

    Visual Studio の Azure Container Registry を作成するダイアログのスクリーンショット。

  6. [作成] をクリックします。 これで [発行] ダイアログに作成したレジストリが表示されます。

    発行ダイアログのスクリーンショット。作成した Azure Container Registry を確認できます。

  7. [完了] を選択し、Azure で新しく作成したレジストリにコンテナー イメージを発行するプロセスを完了します。

    発行の成功を示すスクリーンショット。

次の手順

これでレジストリからコンテナーを、Azure Container Instances などの Docker イメージを実行できるホストにプルできるようになりました。

Visual Studio を使用すると、コンテナー化された .NET、ASP.NET、および ASP.NET Core アプリを簡単にビルド、デバッグ、および実行して、Azure Container Registry、Docker Hub、Azure App Service、または独自のコンテナー レジストリに発行することができます。 この記事では、ASP.NET Core アプリを Azure Container Registry に発行します。

必須コンポーネント

インストールとセットアップ

Docker をインストールするには、まず、「Docker Desktop for Windows: What to know before you install」 (Docker Desktop for Windows: インストール前に知っておくべきこと) の情報を確認します。 次に、Docker Desktop をインストールします。

Docker コンテナーにプロジェクトを追加する

  1. [ASP.NET Core Web アプリ] テンプレートを使用して新しいプロジェクトを作成します。または、.NET Core ではなく .NET Framework を使用する場合は、 [ASP.NET Web アプリケーション (.NET Framework)] を選択します。

  2. [新しい Web アプリケーションの作成] 画面で、 [Docker サポートを有効にします] チェック ボックスがオンになっていることを確認します。

    [Docker サポートを有効にする] チェックボックスのスクリーンショット。

    このスクリーンショットには .NET 6.0 が表示されています。 .NET Framework を使用している場合は、少し異なります。

  3. コンテナーの種類 (Windows または Linux) を選択し、 [作成] をクリックします。

Dockerfile の概要

Dockerfile (Docker の最終イメージを作成するためのレシピ) は、プロジェクトで作成されます。 その中に含まれるコマンドの詳細については、「Dockerfile reference」 (Dockerfile リファレンス) を参照してください。

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WebApplication3/WebApplication3.csproj", "WebApplication3/"]
RUN dotnet restore "WebApplication3/WebApplication3.csproj"
COPY . .
WORKDIR "/src/WebApplication3"
RUN dotnet build "WebApplication3.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication3.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication3.dll"]

前の Dockerfile は、Microsoft Container Registry (MCR) .NET 6 イメージ イメージに基づいており、プロジェクトをビルドしてコンテナーに追加することで基本イメージを変更するための手順が含まれています。 .NET Framework を使用している場合、基本イメージは異なります。

新しいプロジェクト ダイアログの [Configure for HTTPS](HTTPS 用に構成する) チェック ボックスがオンになっている場合、Dockerfile は 2 つのポートを公開します。 1 つのポートは HTTP トラフィック用、もう 1 つのポートは HTTPS 用に使用されます。 チェック ボックスがオンになっていない場合は、HTTP トラフィック用に単一のポート (80) が公開されます。

デバッグ

ツールバーのデバッグ ドロップダウンから [Docker] を選択し、アプリのデバッグを開始します。 証明書の信頼を求めるメッセージが表示される場合があります。続行するには、証明書を信頼することを選びます。

[出力] ウィンドウの [コンテナー ツール] オプションに、実行されているアクションの内容が表示されます。 初めての場合、基本イメージのダウンロードにしばらく時間がかかる場合がありますが、以降の実行でははるかに高速になります。

ビルドが終了すると、ブラウザーが開き、自分のアプリのホーム ページが表示されます。 ブラウザーのアドレス バーに、デバッグ用の localhost URL とポート番号が表示されます。

注意

デバッグ用にポートを変更する必要がある場合は、launchSettings.json ファイルで行うことができます。 コンテナーの起動設定に関する記事を参照してください。

コンテナー ウィンドウ

[コンテナー] ウィンドウを使用して、ご利用のコンピューター上で実行中のコンテナー、および使用可能なイメージを確認できます。

IDE の [検索] ボックスを使用して (Ctrl+Q を押して使用)、 [コンテナー] ウィンドウを開き、container を入力し、一覧から [コンテナー] ウィンドウを選択します。

[コンテナー] ウィンドウをエディターの下などの便利な場所に配置するには、ウィンドウを移動してウィンドウ配置ガイドに従います。

ウィンドウで、ご利用のコンテナーを見つけ、各タブをステップ実行して、環境変数、ポート マッピング、ログ、およびファイル システムを表示します。

[コンテナー] ウィンドウのスクリーンショット。

詳細については、「コンテナー ウィンドウを使用する」を参照してください。

Docker イメージの発行

アプリの開発とデバッグのサイクルが完了すると、アプリの実稼働イメージを作成できます。

  1. 構成ドロップダウンを [リリース] に変更し、アプリを構築します。

  2. ソリューション エクスプローラー で対象のプロジェクトを右クリックし、 [発行] を選択します。

  3. [発行] ダイアログで [Docker コンテナー レジストリ] タブを選択します。

    発行ダイアログのスクリーンショット - [Docker コンテナー レジストリ] を選択する。

  4. [新しい Azure Container Registry を作成する] を選択します。

    発行ダイアログのスクリーンショット - [新しい Azure Container Registry を作成する] を選択する。

  5. [新しい Azure コンテナー レジストリを作成する] で、目的の値を入力します。

    設定 推奨値 説明
    DNS プレフィックス グローバルに一意の名前 コンテナー レジストリを一意に識別する名前。
    サブスクリプション サブスクリプションの選択 使用する Azure サブスクリプション。
    リソース グループ myResourceGroup コンテナー レジストリを作成するリソース グループの名前。 新しいリソース グループを作成する場合は、 [新規] を選択します。
    SKU 標準 コンテナー レジストリのサービス層
    レジストリの場所 近くの場所 [地域] で、自分に近いか、またはコンテナー レジストリを使用する他のサービスに近い場所を選択します。

    Visual Studio の Azure Container Registry を作成するダイアログのスクリーンショット。

  6. [作成] をクリックします。 これで [発行] ダイアログに作成したレジストリが表示されます。

    発行ダイアログのスクリーンショット。作成した Azure Container Registry を確認できます。

  7. [完了] を選択し、Azure で新しく作成したレジストリにコンテナー イメージを発行するプロセスを完了します。

    正常に発行されたことを示すスクリーンショット。

次の手順

これでレジストリからコンテナーを、Azure Container Instances などの Docker イメージを実行できるホストにプルできるようになりました。

その他の技術情報