コンテナー ウィンドウを使用する
[コンテナー] ウィンドウを使用すると、アプリをホストしているコンテナー内の状況を表示できます。 コマンド プロンプトを使用して Docker コマンドを実行し、コンテナーの状況を表示および診断することに慣れている場合、このウィンドウには Visual Studio IDE を離れることなくコンテナーを監視できるさらに便利な方法が用意されています。
[コンテナー] ウィンドウを使用して、コンテナー イメージに関する情報も表示することができます。
必須コンポーネント
- Docker Desktop
- Visual Studio 2022 または Visual Studio 2019 バージョン 16.4 以降。
- Docker Compose ノード、Visual Studio 2022 バージョン 17.7 以降および Docker v2 (これは Docker Desktop と共にインストールされ、既定でオンになります) が対象。
コンテナーに関する情報を表示する
コンテナー化された .NET プロジェクトを開始すると、 [コンテナー] ウィンドウが自動的に開きます。 いつでも Visual Studio でコンテナーを表示するには、Ctrl+Q キーを使用して Visual Studio の [検索] ボックスをアクティブにし、「Containers
」と入力して最初の項目を選択します。 メイン メニューから [コンテナー] ウィンドウを開くこともできます。 メニュー パス [表示]>[その他のウィンドウ]>[コンテナー] を使います。
左側にはローカル コンピューター上のコンテナーの一覧が表示されます。 ソリューションに関連付けられているコンテナーは [ソリューション コンテナー] に表示されます。 右側には、 [環境] 、 [ラベル] 、 [ポート] 、 [ボリューム] 、 [ログ] 、および [ファイル] のタブを含むウィンドウが表示されます。
ヒント
[コンテナー] ツール ウィンドウをドッキングする場所は Visual Studio で簡単にカスタマイズすることができます。 「Visual Studio のウィンドウ レイアウトをカスタマイズする」を参照してください。 デバッガーが実行されているときに、既定で [コンテナー] ウィンドウは [ウォッチ] ウィンドウにドッキングされます。
Docker Compose と Visual Studio 2022 バージョン 17.7 以降を使用している場合、ソリューションとその Docker Compose プロジェクトのノードのツリーが表示され、ソリューションに対しては親ノードが、各プロジェクトに対しては子ノードが表示されます。
環境変数を表示する
[環境] タブには、コンテナーの環境変数が表示されます。 アプリのコンテナーに対しては、これらの変数をさまざまな方法で設定できます。たとえば、Dockerfile で、.env ファイルで、または Docker コマンドを使用してコンテナーを起動するときに -e オプションを使用することでこれを行えます。
Note
環境変数の変更は、リアルタイムでは反映されません。 また、このタブの環境変数はコンテナーのシステム環境変数であり、アプリにローカルなユーザー環境変数は反映されません。
ラベルを表示する
[ラベル] タブには、コンテナーのラベルが表示されます。 ラベルで、Docker オブジェクトにカスタム メタデータを設定できます。 一部のラベルは、Visual Studio によって自動的に設定されます。
ポート マッピングを表示する
[ポート] タブで、お使いのコンテナーに有効なポート マッピングを確認できます。
既知のポートがリンクされているため、ポートに使用できるコンテンツがある場合は、リンクをクリックしてブラウザーを開くことができます。
ボリューム表示
[ボリューム] タブには、コンテナー上のボリューム (マウントされたファイルシステム ノード) が表示されます。
ログを表示する
[ログ] タブには、docker logs
コマンドの結果が表示されます。 既定では、タブにはコンテナー上の stdout と stderr のストリームが表示されますが、出力を構成することができます。 詳細については、Docker のログ記録に関する記事を参照してください。 既定では、[ログ] タブにはログがストリームされますが、これを一時停止にするには、タブの [ストリーム] ボタンをクリックします。[ストリーム] を再度選択すると、中断したところからストリーミングが再開されます。
ログを消去するには、[ログ] タブの [クリア] ボタンを使います。すべてのログを取得するには、[更新] ボタンを使います。
注意
Windows コンテナーでデバッグを使用しないで実行すると、Visual Studio により stdout と stderr が [出力] ウィンドウに自動的にリダイレクトされるため、Ctrl+F5 キーを使用して Visual Studio から開始されたコンテナーでは、このタブにログが表示されません。代わりに [出力] ウィンドウを使用します。
Visual Studio 2022 バージョン 17.7 以降で Docker Compose を使用している場合は、各コンテナーのログを個別に表示するか、1 つの出力ストリームにインターリーブするという選択肢があります。 ソリューションの親ノードを選択すると、すべての Compose プロジェクトのインターリーブ ログが表示されます。 各行の最初の列は、その出力行を生成したコンテナーを示しています。 1 つのコンテナーのログのみを単独で確認したい場合は、その特定のプロジェクトのノードを選択します。
ファイルシステムを表示する
[ファイル] タブでは、プロジェクトを含むアプリ フォルダーを含め、コンテナーのファイルシステムを確認できます。
Visual Studio でファイルを開くには、ファイルを参照してダブルクリックするか、右クリックして [開く] を選択します。 Visual Studio で、読み取り専用モードでファイルを開きます。
[ファイル] タブを使用すると、コンテナーのファイルシステムのインターネット インフォメーション サービス (IIS) ログ、構成ファイル、その他のコンテンツ ファイルなどのアプリケーション ログを確認できます。
Visual Studio 2022 バージョン 17.7 以降では、.NET 8 以降を対象とする場合、通常のユーザー権限でアプリを実行することを指定する USER app
コマンドが Dockerfile に含まれている場合があります。 [ファイル] タブもこれらの権限を使用するため、フォルダーが表示のために昇格された権限を要求するように設定されており、一部のフォルダーを表示できない場合があります。
コンテナーの開始、停止、および削除
既定では、Docker で管理されているコンピューター上のすべてのコンテナーが [コンテナー] ウィンドウに表示されます。 ツール バーのボタンを使用して、コンテナーの開始、停止、または不要になったコンテナーの削除を行うことができます。 この一覧は、コンテナーが作成または削除されると動的に更新されます。
たとえば、複数のコンテナーを選択して一度に複数を削除するには、Ctrl キーを押しながらクリックします。 10 個を超えるコンテナーを起動しようとすると、これの確認を求めるプロンプトが表示されます。 必要に応じて、確認プロンプトを無効にできます。
実行中のコンテナーでターミナル ウィンドウを開く
[コンテナー] ウィンドウの [ターミナル ウィンドウを開く] ボタンを使用して、コンテナーでターミナル ウィンドウ (コマンド プロンプトまたは対話型シェル) を開くことができます。
Windows コンテナーの場合は、Windows のコマンド プロンプトが開きます。 Linux コンテナーの場合は、Bash シェルによってウィンドウが表示されます。
.NET 8 を対象としている場合、Dockerfile で USER app
コマンドを指定できます。これはアプリが昇格された権限ではなく、通常のユーザー権限で実行されることを意味します。 Visual Studio 2022 バージョン 17.7 以降で NET 8 以降を対象とする場合、Visual Studio によって生成される Dockerfile にはこれが含まれます。 ターミナルは、Dockerfile で指定されたユーザー (既定では .NET 8 プロジェクトに対しては、それは app
です) として開きます。ユーザーが指定されていない場合は、root
ユーザーとして実行されます。
通常、ターミナル ウィンドウは、Visual Studio の外部に別のウィンドウとして開かれます。 ドッキング可能なツール ウィンドウとしてコマンドライン環境を Visual Studio IDE に統合する場合は、Whack Whack Terminal をインストールします。
デバッガーをプロセスにアタッチする
[コンテナー] ウィンドウのツール バーにある [プロセスにアタッチ] ボタンを使用して、コンテナーで実行されているプロセスにデバッガーをアタッチできます。 このボタンを使用すると [プロセスにアタッチ] ダイアログが表示され、コンテナーで実行されている使用可能なプロセスが表示されます。
コンテナー内のマネージド プロセスにアタッチすることができます。 別のコンテナーでプロセスを探すには、 [検索] ボタンを使用し、 [Docker コンテナーの選択] ダイアログで別のコンテナーを選択します。
イメージを表示する
[コンテナー] ウィンドウの [イメージ] タブを使用して、ローカル コンピューター上のイメージを表示することもできます。 外部リポジトリから取得されたイメージは、ツリー ビューでまとめられています。
ウィンドウには、イメージに適用できるタブ ( [ラベル] と [詳細] ) のみが含まれます。 [詳細] タブには、イメージの構成の詳細が JSON 形式で表示されます。
イメージを削除するには、ツリー ビューでイメージを右クリックして [削除] を選択するか、イメージを選択してツール バーの [削除] ボタンを使用します。
コンテナーとイメージを取り除く
[コンテナー] ウィンドウ ツール バーの [取り除く] ボタンを使用すると、使用しなくなったコンテナーとイメージを簡単に削除できます。
未使用のコンテナーをすべて削除する場合は、確認が求められます。
[イメージ] タブが選択されていると、 [取り除く] ボタンで、すべての不確定なイメージを削除するかどうかの確認が求められます。 不確定なイメージとは、タグ付けされたイメージとの関連がなくなったレイヤーのイメージです。 それらを削除すると、ディスク領域の節約に役立つ場合があります。
構成オプション
コンテナーとイメージの削除、一度に 10 個を超えるコンテナーの起動など、さまざまなタスクの確認ダイアログを構成できます。 ダイアログのチェック ボックスを使用して、各プロンプトを無効にできます。 これらのオプションは、 [ツール]>[オプション]>[コンテナー ツール]>[コンテナー ツール] ウィンドウの設定を使用して有効または無効にすることもできます。 コンテナー ツールの構成に関する記事を参照してください。