Docker コンテナー上で実行されているプロセスにアタッチする
Visual Studio を使用して、Windows Docker コンテナーまたは Linux .NET Core Docker コンテナーで実行されているアプリをデバッグできます。
前提条件
Linux サーバー上にまだ存在しない場合は、SSH サーバーをインストールする必要があります。curl または wget で解凍してインストールします。 たとえば、Ubuntu では、以下を実行して行うことができます。
sudo apt-get install openssh-server unzip curl
セキュリティで保護されたファイル転送プロトコル (SFTP) も有効にする必要があります。 ほとんどの SSH ディストリビューションでは既定で SFTP がインストールされ、有効化されますが、必ずそうなるわけではありません。
Linux Docker コンテナー上で実行されているプロセスにアタッチする
[プロセスにアタッチ] ダイアログ ボックスを使用して、ローカル コンピューターまたはリモート マシン上の Linux .NET Core Docker コンテナーで実行されているプロセスに Visual Studio デバッガーをアタッチできます。
重要
この機能を使うには、ソース コードへのローカル アクセス権を持っている必要があります。
Linux Docker コンテナー内の実行中のプロセスにアタッチするには:
Visual Studio で、[デバッグ] > [プロセスにアタッチ] (CTRL + ALT + P キー) を選択して、[プロセスにアタッチ] ダイアログ ボックスを開きます。
[接続の種類] を [Docker (Linux コンテナー)] に設定します。
[Docker コンテナーの選択] ダイアログボックスを使用して [検索] を選択し、 [接続先] を設定します。
Docker コンテナー プロセスは、ローカルでもリモートでもデバッグできます。
Docker コンテナー プロセスをローカルでデバッグするには:
[Docker CLI ホスト] を [ローカル コンピューター] に設定します。
アタッチする実行中のコンテナーをリストから選択し、 [OK] をクリックします。
Docker コンテナー プロセスをリモートでデバッグするには:
2 つのオプションのいずれかを使用して、Docker コンテナーで実行中のプロセスに接続できます。 SSH を使用するという 1 つ目のオプションは、ローカル コンピューターに Docker ツールがインストールされていない場合に最適です。 ローカルに Docker ツールをインストールしていて、リモートの要求を受け入れるように構成されている Docker デーモンがある場合は、2 つ目のオプションである Docker デーモンの使用を試してください。
SSH を使用してリモート マシンに接続するには:
- [追加] を選択してリモート システムに接続します。
- 必要な接続情報を入力し、[接続] を選択します。
- SSHに接続後、アタッチする実行中のコンテナーを選択し、[OK] を選択します。
- [追加] を選択してリモート システムに接続します。
Docker デーモンを介してプロセスを実行しているリモート コンテナーにターゲットを設定するには
- [Docker ホスト (オプション)] でデーモンアドレス (つまり、TCP、IP 経由など) を指定し、[更新する] を選択します。
- デーモンに正常に接続した後にアタッチする実行中のコンテナーを選択し、[OK] を選択します。
Visual Studio で [使用可能なプロセス] リストから対応するコンテナー プロセスを選択し、 [アタッチ] を選択して C# のデバッグを開始します。
Windows Docker コンテナー上で実行されているプロセスにアタッチする
[プロセスにアタッチ] ダイアログ ボックスを使用して、ローカル コンピューター上の Windows Docker コンテナーで実行されているプロセスに Visual Studio デバッガーをアタッチできます。
重要
この機能を .NET Core プロセスで使用するには、.NET Core Cross-Platform Development ワークロードをインストールする必要があります。また、ソース コードへのローカル アクセス権を持っている必要があります。
Windows Docker コンテナーで実行中のプロセスにアタッチするには:
Visual Studio で、[デバッグ] > [プロセスにアタッチ] (または CTRL+ALT+P キー) を選択して、[プロセスにアタッチ] ダイアログ ボックスを開きます。
[接続の種類] を [Docker (Windows コンテナー)] に設定します。
[Docker コンテナーの選択] ダイアログボックスを使用して [検索] を選択し、 [接続先] を設定します。
重要
ターゲット プロセスは、それが実行されている Docker Windows コンテナーと同じプロセッサ アーキテクチャを持つ必要があります。
現在、SSH 経由でターゲットをリモート コンテナーに設定することはできません。Docker デーモンを使用して実行する必要があります。
Docker デーモンを介してプロセスを実行しているリモート コンテナーにターゲットを設定するには
[Docker ホスト (オプション)] でデーモンアドレス (つまり、TCP、IP 経由など) を指定し、[更新する] を選択します。
デーモンに正常に接続した後にアタッチする実行中のコンテナーを選択し、[OK] を選択します。
[使用可能なプロセス] リストから対応するコンテナー プロセスを選択し、 [アタッチ] を選択して C# のデバッグを開始します。