次の方法で共有


コンテナー ボリューム マッピングをカスタマイズする

デバッグをコンテナーで機能させるために、Visual Studio では、ボリューム マッピングを使用してホスト マシンからデバッガーと NuGet フォルダーをマップします。 ボリューム マッピングの詳細については、Docker のドキュメント (こちら) を参照してください。 コンテナーのボリューム マッピングを表示するには、Visual Studio の [コンテナー] ウィンドウを使用します。

前提条件

Visual Studio コンテナー イメージでのボリューム マウント

コンテナーにマウントされるボリュームは次のとおりです。

ボリューム 説明
アプリ フォルダー Dockerfile が配置されているプロジェクト フォルダーが含まれています。
NuGet パッケージのフォルダー プロジェクトの obj{project}.csproj.nuget.g.props ファイルから読み取る NuGet パッケージとフォールバック フォルダーが含まれています。
リモート デバッガー プロジェクトの種類に応じて、コンテナーでデバッガーを実行するために必要なビットが含まれています。 「デバッグ用にコンテナー イメージをカスタマイズする」を参照してください。
ソース フォルダー Docker コマンドに渡されるビルド コンテキストが含まれています。

コンテナーにマウントされるボリュームは次のとおりです。 コンテナーに表示される内容は、使用している Visual Studio 2022 のマイナー バージョンによって異なる場合があります。

体積 説明
アプリ フォルダー Dockerfile が配置されているプロジェクト フォルダーが含まれています。
NuGet パッケージのフォルダー プロジェクトの obj{project}.csproj.nuget.g.props ファイルから読み取る NuGet パッケージとフォールバック フォルダーが含まれています。
リモート デバッガー プロジェクトの種類に応じて、コンテナーでデバッガーを実行するために必要なビットが含まれています。 詳細については、「デバッグ用にコンテナー イメージをカスタマイズする」を参照してください。
ソース フォルダー Docker コマンドに渡されるビルド コンテキストが含まれています。
VSTools デバッガー、コンテナー ウィンドウ、Azure トークンの処理、ホット リロード エージェント、Distroless Helper のサポートなど、コンテナーの操作をサポートする Visual Studio ツールが含まれています。

.NET 8 では、ユーザー シークレットと HTTPS 証明書が含まれる、アプリ ユーザー用の追加のマウント ポイントがルートに存在する場合があります。

Note

Visual Studio 17.10 Docker Desktop を使用せずに Linux 用 Windows サブシステム (WSL) で Docker Engine を使用している場合は、ボリューム マウントの作成時に Visual Studio が WSL パスを使用するように環境変数 VSCT_WslDaemon=1 を設定します。 NuGet パッケージ Microsoft.VisualStudio.Azure.Containers.Tools.Targets 1.20.0-Preview 1 も必要です。

ASP.NET Core Web アプリの場合、SSL 証明書とユーザー シークレット用の 2 つの追加フォルダーが存在する可能性があります。詳細については、「コンテナー化された ASP.NET Core アプリに SSL を使用する」を参照してください。

コンテナー ボリュームをマウントする

docker run コマンド ライン引数を使用すると、別のボリュームをマウントできます。

  1. コンテナー化されたプロジェクトのプロジェクト ファイルを開きます。

  2. 新しいコマンド ライン引数を指定するには、MSBuild プロパティ DockerfileRunArguments を追加し、-v または --mount 構文を指定します。 たとえば次の構文では、ボリューム myvolume を作成し、フォルダー /scratch 内のコンテナーにマウントします。

    <PropertyGroup>
       <DockerfileRunArguments>-v myvolume:/scratch</DockerfileRunArguments>
    </PropertyGroup>
    

    -v または --mount オプションのコマンドライン構文については、Docker のドキュメントを参照してください。