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 デバッガーをアタッチできます。
重要
この機能を使用するには、ソース コードへのローカル アクセス権が必要です。
手記
次の手順を使用して、SSH 経由で WSL で実行されている Linux Docker にアタッチできますが、WSL インスタンスでは最初に SSH サーバーを実行する必要があります。 たとえば、Open SSH Server (例: sudo apt-get install openssh-server
) をインストールし、構成ファイル (/etc/ssh/sshd_config など) を編集してサーバーを構成し、サーバーを起動します (例: sudo service ssh start
)。
Linux Docker コンテナーで実行中のプロセスにアタッチするには:
Visual Studio で、[デバッグ] > [プロセスにアタッチ] (Ctrl + Alt + P) を選択 [プロセスにアタッチ] ダイアログ ボックスを開きます。
接続の種類 を Docker (Linux コンテナー)に設定します。
Find... を選んで、[Docker コンテナー の選択] ダイアログ ボックスを通して、接続ターゲット を設定します。
Docker コンテナー プロセスは、ローカルまたはリモートでデバッグできます。
Docker コンテナー プロセスをローカルでデバッグするには:
[Docker CLI ホスト] を [ローカル コンピューター] に設定します。
一覧からアタッチする実行中のコンテナーを選択し、[OK] クリックします。
Docker コンテナー プロセスをリモートでデバッグするには:
2 つのオプションのいずれかを使用して、Docker コンテナーで実行中のプロセスに接続できます。 SSH を使用する最初のオプションは、ローカル コンピューターに Docker ツールがインストールされていない場合に最適です。 Docker ツールがローカルにインストールされていて、リモート要求を受け入れるように構成された Docker デーモンがある場合は、Docker デーモンを使用して 2 番目のオプションを試してください。
SSH 経由でリモート コンピューターに接続するには:
- リモートシステムに接続するには、追加... を選択します。
に接続する
に接続する
- 必要な接続情報を入力し、接続を選択します。
- SSH に接続した後、接続する実行中のコンテナーを選択し、[OK] 選択します。
- リモートシステムに接続するには、追加... を選択します。
Docker デーモンを使用してプロセスを実行しているリモート コンテナーにターゲットを設定するには:
- Docker ホスト (省略可能) でデーモンアドレス (つまり、TCP、IP など)を指定し、その後、更新を選択します。
- デーモンに正常に接続したら、アタッチする実行中のコンテナーを選択し、[OK] 選択します。
[使用可能なプロセス] の一覧から対応するコンテナー プロセス 選択し、[アタッチ] 選択して、Visual Studio で C# コンテナー プロセスのデバッグを開始します。
Windows Docker コンテナーで実行されているプロセスにアタッチする
[プロセスへのアタッチ] ダイアログ ボックスを使用して、ローカル コンピューター上の Windows Docker コンテナーで実行されているプロセスに Visual Studio デバッガー をアタッチ できます。
重要
.NET Core プロセスでこの機能を使用するには、.NET Core クロスプラットフォーム開発ワークロードをインストールし、ソース コードへのローカル アクセス権を持っている必要があります。
Windows Docker コンテナーで実行中のプロセスにアタッチするには:
Visual Studio で、[デバッグ] > [プロセスにアタッチ] (または ctrl + Alt + P ) を選択して、[プロセスへのアタッチ] ダイアログ ボックスを開きます。
接続の種類 を Docker (Windows コンテナー)に設定します。
[検索...] を選択して、Docker コンテナーの選択 ダイアログボックスを使用し、接続ターゲット を設定します。
重要
ターゲット プロセスには、実行されている Docker Windows コンテナーと同じプロセッサ アーキテクチャが必要です。
SSH 経由でターゲットをリモート コンテナーに設定することは現在使用できず、Docker デーモンを使用してのみ実行できます。
Docker デーモンを使用してプロセスを実行しているリモート コンテナーにターゲットを設定するには:
Docker ホスト (省略可能) でデーモン アドレス (TCP、IP など) を指定し、[最新の情報に更新] を選択します。
デーモンに正常に接続したら、アタッチする実行中のコンテナーを選択し、[OK] 選択します。
[使用可能なプロセス] の一覧から対応するコンテナー プロセス 選択し、[アタッチ] を選択して C# コンテナー プロセスのデバッグを開始します。
をする
をする