コンテナー ボリューム マッピングをカスタマイズする
コンテナーでデバッグを機能させるために、Visual Studio ではボリューム マッピングを使用して、ホスト コンピューターからデバッガーと NuGet フォルダーをマップします。 ボリューム マッピングについては、の Docker ドキュメント参照してください。 Visual Studio の [コンテナー] ウィンドウを使用して、コンテナーのボリューム マッピングを表示できます。
前提 条件
- Docker Desktop
- Web 開発、Azure Tools ワークロード、.NET デスクトップ開発ワークロードのいずれか、またはすべてがインストールされた Visual Studio 2019 以降
Visual Studio コンテナー イメージでのボリューム マウント
コンテナーにマウントされているボリュームを次に示します。
容積 | 説明 |
---|---|
アプリ フォルダー | Dockerfile が配置されているプロジェクト フォルダーを格納します。 |
NuGet パッケージのフォルダー | プロジェクト内の obj{project}.csproj.nuget.g.props ファイルから読み取られた NuGet パッケージとフォールバック フォルダーが含まれています。 |
リモート デバッガー | プロジェクトの種類に応じて、コンテナーでデバッガーを実行するために必要なビットが含まれます。 デバッグ用のコンテナーイメージをカスタマイズするには、セクションを参照してください。 |
ソース フォルダー | Docker コマンドに渡されるビルド コンテキストが含まれています。 |
コンテナーにマウントされているボリュームを次に示します。 コンテナーに表示される内容は、使用している Visual Studio 2022 のマイナー バージョンによって異なる場合があります。
.NET 8 の場合、ルートと、ユーザー シークレットと HTTPS 証明書を含むアプリ ユーザーの追加のマウント ポイントも存在する可能性があります。
手記
Visual Studio 17.10 Docker Desktop を使用せずに Windows Subsystem for Linux (WSL) で Docker エンジンを使用している場合は、ボリューム マウントの作成時に Visual Studio で WSL パスを使用するように環境変数 VSCT_WslDaemon=1
設定します。 NuGet パッケージ Microsoft.VisualStudio.Azure.Containers.Tools.Targets 1.20.0-Preview 1 も必要です。
コア Web アプリ ASP.NET 場合は、SSL 証明書とユーザー シークレット用の 2 つの追加フォルダーが存在する可能性があります。詳細については、「コンテナー化された ASP.NET Core アプリに SSL を使用する」で詳しく説明
コンテナー ボリュームをマウントする
docker run
コマンドライン引数を使用して、別のボリュームをマウントできます。
コンテナー化されたプロジェクトのプロジェクト ファイルを開きます。
新しいコマンド ライン引数を指定するには、MSBuild プロパティ
DockerfileRunArguments
を追加し、-v
または--mount
構文を指定します。 たとえば、次の構文では、ボリュームmyvolume
が作成され、/scratch
フォルダー内のコンテナーにマウントされます。<PropertyGroup> <DockerfileRunArguments>-v myvolume:/scratch</DockerfileRunArguments> </PropertyGroup>
-v または --mount オプションのコマンドライン構文については、Docker のドキュメントを参照してください。