次の方法で共有


[コンテナー] ウィンドウを使用する

Visual Studio コンテナー ウィンドウを使用すると、アプリをホストする Docker コンテナー内で何が起こっているかを確認したり、コンテナー イメージを表示したりできます。 コンテナーを表示および分析する Docker コマンドの実行に慣れている場合、このウィンドウを使用すると、Visual Studio IDE を離れることなくコンテナーを監視および操作する便利な方法が提供されます。

[前提条件]

コンテナーに関する情報を表示する

コンテナー化された .NET プロジェクトを開始すると、[ コンテナー ] ウィンドウが自動的に開きます。 [ コンテナー ] ウィンドウをいつでも開くには、Visual Studio メニューから [表示>その他の Windows>Containers ] を選択します。 Ctrl+使用して Visual Studio の検索ボックスを開き、「コンテナー」と入力して、[コンテナー] 項目を選択することもできます。

Visual Studio の [コンテナー] ウィンドウのスクリーンショット。左側のウィンドウでコンテナーが選択され、右側のウィンドウで [環境] タブが選択されています。

ウィンドウの左側には、ローカル コンピューター上のコンテナーの一覧が表示されます。 現在のソリューションに関連付けられているコンテナーは、 ソリューション コンテナーの下にあります。 右側には、[ 環境]、[ ラベル]、[ ポート]、[ ボリューム]、[ ファイル]、[ ログ] のタブが表示されたペインがあります。

コンテナー化された .NET プロジェクトを開始すると、[ コンテナー ] ウィンドウが自動的に開きます。 [コンテナー] ウィンドウをいつでも開くには、Visual Studio メニューから [表示>その他の Windows>Containers] を選択するか、Ctrl+K、Ctrl+キーを押します。 Ctrl+使用して Visual Studio の検索ボックスを開き、「コンテナー」と入力して、[コンテナー] 項目を選択することもできます。

Visual Studio の [コンテナー] ウィンドウのスクリーンショット。左側のウィンドウでコンテナーが選択され、右側のウィンドウで [環境] タブが選択されています。

ウィンドウの左側には、ローカル コンピューター上のコンテナーの一覧が表示されます。 現在のソリューションに関連付けられているコンテナーは、 ソリューション コンテナーの下にあります。 右側には、[ 環境]、[ ラベル]、[ ポート]、[ ボリューム]、[ ファイル]、[ ログ]、[詳細] のタブが表示されたペイン があります

Docker Compose と Visual Studio 2022 バージョン 17.7 以降を使用している場合は、ノードのツリーが表示され、ソリューションの親ノードと、Docker Compose に登録されている各プロジェクトの子ノードが表示されます。

[コンテナー] ウィンドウの Docker Compose ノードを示すスクリーンショット。

ヒント

既定では、デバッガーの実行中は、[ コンテナー ] ウィンドウが [ウォッチ ] ウィンドウにドッキングされます。 コンテナー ツール ウィンドウをドッキングする場所を簡単にカスタマイズできます。 Visual Studio でのウィンドウ レイアウトのカスタマイズを参照してください。

環境変数を表示する

[ 環境 ] タブには、コンテナー内の環境変数が表示されます。 これらの変数は、Dockerfile、 .env ファイル、または Docker コマンドを使用してコンテナーを起動するときに -e オプションを使用して設定できます。

環境変数への変更は、リアルタイムでは反映されません。 また、このタブの環境変数は、アプリにローカルなユーザー環境変数ではなく、コンテナー上のシステム環境変数です。

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

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

ラベルの表示

[ ラベル ] タブには、コンテナーのラベルが表示されます。 ラベルは、Docker オブジェクトにカスタム メタデータを設定する方法です。 Visual Studio では、一部のラベルが自動的に設定されます。

Visual Studio の [コンテナー] ウィンドウのスクリーンショット。[ラベル] タブが表示されています。

Visual Studio の [コンテナー] ウィンドウのスクリーンショット。[ラベル] タブが表示されています。

ポート マッピングを表示する

[ ポート ] タブでは、コンテナーのポート マッピングを確認できます。 既知のポートがリンクされているため、リンクを選択して、ホスト ポート アドレスへのブラウザーを開くことができます。

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

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

ボリュームの表示

[ ボリューム ] タブには、コンテナーにマウントされているファイルシステム ノード ( ボリューム) が表示されます。

[コンテナー] ウィンドウの [ボリューム] タブのスクリーンショット。

[コンテナー] ウィンドウの [ボリューム] タブのスクリーンショット。

ファイルシステムを表示する

[ ファイル ] タブでは、プロジェクトを含むアプリ フォルダーを含むコンテナーのファイルシステムを表示できます。 [ ファイル ] タブを使用すると、インターネット インフォメーション サービス (IIS) ログ、構成ファイル、コンテナーのファイルシステム内のその他のコンテンツ ファイルなどのアプリケーション ログを表示できます。

[コンテナー] ウィンドウの [ファイル] タブのスクリーンショット。

[コンテナー] ウィンドウの [ファイル] タブのスクリーンショット。

Visual Studio 2022 バージョン 17.7 以降では、.NET 8 以降を対象とする場合、Dockerfile に USER app コマンドが含まれている可能性があります。このコマンドは、通常のユーザーアクセス許可でアプリを実行することを指定します。 [ ファイル ] タブでは同じアクセス許可が使用されるため、管理者特権のアクセス許可を必要とするフォルダーを表示できない場合があります。

Visual Studio でファイルを開くには、ファイルをダブルクリックするか、右クリックして [開く] を選択します。 Visual Studio は、ファイルを読み取り専用モードで開きます。

Visual Studio で表示するために開いているファイルのスクリーンショット。

Visual Studio で表示するために開いているファイルのスクリーンショット。

ログの表示

[ ログ ] タブには、 docker logs コマンドの結果が表示されます。 既定では、タブにはコンテナー上の stdout ストリームと stderr ストリームが表示されますが、出力を構成できます。 詳細については、 Docker のログ記録に関するページを参照してください。

既定では、[ ログ ] タブでログがストリーミングされます。 タブの [ストリーミング ログ] ボタンを選択してストリーミングを一時停止できます。もう一度 [ストリーミング ログ] を選択すると、中断した場所からストリーミングを再開します。

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

既定では、[ ログ ] タブでログがストリーミングされます。 タブの [ストリーム] ボタンを選択して 、ストリーム を一時停止できます。[ ストリーム] をもう一度選択して、中断した場所からストリーミングを再開します。

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

ログをクリアするには、[ログ] タブの [クリア] ボタンを使用します。すべてのログを取得するには、[更新] ボタンを使用します。

デバッグなしで Windows コンテナーを実行すると、Visual Studio によって stdoutstderr が自動的に 出力 ウィンドウにリダイレクトされます。 これらのログは、[ ログ ] タブには表示されません。

Visual Studio 2022 バージョン 17.7 以降で Docker Compose を使用している場合は、各コンテナーのログを個別に表示するか、単一の出力ストリームにインターリーブすることができます。 ソリューションの親ノードを選択すると、全ての Compose プロジェクトから交錯したログが表示されます。 各行の最初の列には、その出力行を生成したコンテナーが表示されます。 1 つのコンテナーのログのみを表示する場合は、そのプロジェクトのノードを選択します。

[コンテナー] ウィンドウの [ログ] タブにインターリーブされたログを示すスクリーンショット。

詳細を表示する

[ 詳細 ] タブには、コンテナーの構成に関するメタデータとランタイム情報が JSON 形式で表示されます。 この情報には、環境変数、ポート、ボリューム、およびその他のランタイム設定が含まれます。

[コンテナー] ウィンドウの [詳細] タブを示すスクリーンショット。

コンテナーとの対話

コンテナーとイメージの削除、一度に 10 個を超えるコンテナーの起動など、さまざまなタスクの確認ダイアログにプロンプトが表示される場合があります。 ダイアログ ウィンドウのチェック ボックスを使用して、各プロンプトを無効にすることができます。

これらのオプションは、[ツール]>[オプション]、>[コンテナーツール]>[コンテナーツール ウィンドウ] の設定を使用して有効または無効にすることもできます。 詳細については、「 コンテナー ツールの構成」を参照してください。

これらのオプションは、 Tools>Options>Container Tools>Containers ウィンドウの設定を使用して無効にすることもできます。 詳細については、「 コンテナー ツールの構成」を参照してください。

コンテナーの開始、停止、および削除

既定では、 Docker が管理するマシン上のすべてのコンテナーが [コンテナー] ウィンドウに表示されます。 [コンテナー] ウィンドウのツール バー ボタンを使用して、コンテナーを開始、停止、または削除できます。 コンテナーの一覧は、コンテナーが作成または削除されると動的に更新されます。

一度に複数のコンテナーを削除する場合など、複数のコンテナーを選択するには、Ctrl+使用します。 一度に 10 個を超えるコンテナーを起動または削除するかどうかを確認するメッセージが表示されます。 必要に応じて、確認プロンプトを無効にすることができます。

実行中のコンテナーでターミナル ウィンドウを開く

コンテナー ウィンドウでターミナル ウィンドウ (コマンド プロンプトまたは対話型シェル) を開くには、[コンテナー] ウィンドウの [ターミナル ウィンドウを開く] ボタンを使用します。

[コンテナー] ウィンドウの [ターミナル ウィンドウを開く] のスクリーンショット。

[コンテナー] ウィンドウの [ターミナル ウィンドウを開く] のスクリーンショット。

Windows コンテナーの場合、Windows コマンド プロンプトが開きます。 Linux コンテナーの場合、Bash シェルを使用してウィンドウが開きます。

Bash ウィンドウのスクリーンショット。

通常、ターミナル ウィンドウは Visual Studio の外部で別のウィンドウとして開きます。 ドッキング可能なツール ウィンドウとしてコマンド ライン環境を Visual Studio IDE に統合する場合は、 Whack Whack ターミナルをインストールできます。

Bash ウィンドウのスクリーンショット。

Visual Studio 2022 バージョン 17.7 以降で .NET 8 を対象としている場合、Dockerfile で USER app コマンドを指定できます。つまり、アプリは昇格されたアクセス許可ではなく、通常のユーザーアクセス許可で実行されます。 ターミナルは、Dockerfileで指定されたユーザーとして開きます。これは、.NET 8プロジェクトでは既定のappとして設定されています。 ユーザーが指定されていない場合、ターミナルは root ユーザーとして実行されます。

コンテナー プロセスにデバッガーをアタッチする

コンテナー ウィンドウのツール バーの [プロセスにアタッチ] ボタンを使用して、コンテナーで実行されているプロセスにデバッガーをアタッチできます。 このボタンを使用すると、[ プロセスにアタッチ ] ダイアログ ボックスが表示され、コンテナーで実行されているプロセスが表示されます。

[プロセスにアタッチ] ダイアログ ボックスのスクリーンショット。

[プロセスにアタッチ] ダイアログ ボックスのスクリーンショット。

コンテナー内のマネージド プロセスにアタッチできます。 別のコンテナーでプロセスを検索するには、[プロセスにアタッチ] ダイアログ ボックスで [検索] ボタンを選択し、[Docker コンテナーの選択] ダイアログ ボックスで別のコンテナーを選択します。

画像を表示する

[コンテナー] ウィンドウの左側にある [イメージ] タブを使用して、ローカル コンピューターでイメージを表示できます。 外部リポジトリからプルされたイメージは、ツリービューでグループ化されます。

コンテナー イメージを示す [コンテナー] ウィンドウを示すスクリーンショット。

右側のウィンドウには、画像に適用できるタブ ( ラベル詳細) があります。 [ 詳細 ] タブには、画像の構成の詳細が JSON 形式で表示されます。

[コンテナー] ウィンドウの [画像] > [詳細] タブを示すスクリーンショット。

コンテナー イメージを示す [コンテナー] ウィンドウを示すスクリーンショット。

右側のウィンドウには、画像に適用できるタブ ( ラベル詳細レイヤー) があります。 [ 詳細 ] タブには、画像の構成の詳細が JSON 形式で表示されます。

[コンテナー] ウィンドウの [画像] > [詳細] タブを示すスクリーンショット。

イメージを削除するには、ツリービューでイメージを右クリックし、[ 削除] を選択するか、イメージを選択してツール バーの [削除 ] ボタンを選択します。

コンテナーとイメージを取り除く

[コンテナー] ウィンドウのツール バーの [ 排除 ] ボタンを選択すると、使用していない コンテナー とイメージを簡単に削除できます。

[プルーン] ボタンを示すスクリーンショット。

  • [ コンテナー ] タブが選択されている場合は、未使用のコンテナーをすべて削除することを確認するメッセージが表示されます。

[プルーン] ボタンを示すスクリーンショット。

  • [ コンテナー ] タブが選択されている場合は、停止したすべてのコンテナーを削除することを確認するメッセージが表示されます。
  • [ イメージ ] タブが選択されている場合は、未解決の画像をすべて削除するかどうかを確認するメッセージが表示されます。 孤立したイメージは、タグ付けされたイメージに関連付けられていないレイヤーのイメージです。 ディスク領域を節約するために、未解決のイメージを時々排除します。