Share via


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 コンテナー内の実行中のプロセスにアタッチするには:

  1. Visual Studio で、[デバッグ] > [プロセスにアタッチ] (CTRL + ALT + P キー) を選択して、[プロセスにアタッチ] ダイアログ ボックスを開きます。

  2. [接続の種類][Docker (Linux コンテナー)] に設定します。

    Docker (Linux コンテナー) の接続の種類が表示されている Visual Studio の [プロセスにアタッチ] ダイアログのスクリーンショット。

    Docker (Linux コンテナー) の接続の種類が表示されている Visual Studio の [プロセスにアタッチ] ダイアログのスクリーンショット。

  3. [Docker コンテナーの選択] ダイアログボックスを使用して [検索] を選択し、 [接続先] を設定します。

    Docker コンテナー プロセスは、ローカルでもリモートでもデバッグできます。

    • Docker コンテナー プロセスをローカルでデバッグするには:

      1. [Docker CLI ホスト][ローカル コンピューター] に設定します。

      2. アタッチする実行中のコンテナーをリストから選択し、 [OK] をクリックします。

        Docker コンテナー メニューの選択のスクリーンショット。

        Docker コンテナー メニューの選択のスクリーンショット。

    • Docker コンテナー プロセスをリモートでデバッグするには:

      2 つのオプションのいずれかを使用して、Docker コンテナーで実行中のプロセスに接続できます。 SSH を使用するという 1 つ目のオプションは、ローカル コンピューターに Docker ツールがインストールされていない場合に最適です。 ローカルに Docker ツールをインストールしていて、リモートの要求を受け入れるように構成されている Docker デーモンがある場合は、2 つ目のオプションである Docker デーモンの使用を試してください。

      • SSH を使用してリモート マシンに接続するには:

        1. [追加] を選択してリモート システムに接続します。
          リモート システムへの接続のスクリーンショット。
          リモート システムへの接続のスクリーンショット。
        2. 必要な接続情報を入力し、[接続] を選択します。
        3. SSHに接続後、アタッチする実行中のコンテナーを選択し、[OK] を選択します。
      • Docker デーモンを介してプロセスを実行しているリモート コンテナーにターゲットを設定するには

        1. [Docker ホスト (オプション)] でデーモンアドレス (つまり、TCP、IP 経由など) を指定し、[更新する] を選択します。
        2. デーモンに正常に接続した後にアタッチする実行中のコンテナーを選択し、[OK] を選択します。
  4. Visual Studio で [使用可能なプロセス] リストから対応するコンテナー プロセスを選択し、 [アタッチ] を選択して C# のデバッグを開始します。

    Visual Studio の [プロセスにアタッチ] ダイアログのスクリーンショット。[接続の種類] が [Docker (Linux コンテナー)] に設定され、dotnet プロセスが選択されています。

    Visual Studio の [プロセスにアタッチ] ダイアログのスクリーンショット。[接続の種類] が [Docker (Linux コンテナー)] に設定され、dotnet プロセスが選択されています。

Windows Docker コンテナー上で実行されているプロセスにアタッチする

[プロセスにアタッチ] ダイアログ ボックスを使用して、ローカル コンピューター上の Windows Docker コンテナーで実行されているプロセスに Visual Studio デバッガーをアタッチできます。

重要

この機能を .NET Core プロセスで使用するには、.NET Core Cross-Platform Development ワークロードをインストールする必要があります。また、ソース コードへのローカル アクセス権を持っている必要があります。

Windows Docker コンテナーで実行中のプロセスにアタッチするには:

  1. Visual Studio で、[デバッグ] > [プロセスにアタッチ] (または CTRL+ALT+P キー) を選択して、[プロセスにアタッチ] ダイアログ ボックスを開きます。

  2. [接続の種類][Docker (Windows コンテナー)] に設定します。

    Docker (Windows コンテナー) の接続の種類が表示されている Visual Studio の [プロセスにアタッチ] ダイアログのスクリーンショット。

    Docker (Windows コンテナー) の接続の種類が表示されている Visual Studio の [プロセスにアタッチ] ダイアログのスクリーンショット。

  3. [Docker コンテナーの選択] ダイアログボックスを使用して [検索] を選択し、 [接続先] を設定します。

    重要

    ターゲット プロセスは、それが実行されている Docker Windows コンテナーと同じプロセッサ アーキテクチャを持つ必要があります。

    現在、SSH 経由でターゲットをリモート コンテナーに設定することはできません。Docker デーモンを使用して実行する必要があります。

    Docker デーモンを介してプロセスを実行しているリモート コンテナーにターゲットを設定するには

    1. [Docker ホスト (オプション)] でデーモンアドレス (つまり、TCP、IP 経由など) を指定し、[更新する] を選択します。

    2. デーモンに正常に接続した後にアタッチする実行中のコンテナーを選択し、[OK] を選択します。

  4. [使用可能なプロセス] リストから対応するコンテナー プロセスを選択し、 [アタッチ] を選択して C# のデバッグを開始します。

    Visual Studio の [プロセスにアタッチ] ダイアログのスクリーンショット。[接続の種類] が [Docker (Windows コンテナー)] に設定され、dotnet.exe プロセスが選択されています。

    Visual Studio の [プロセスにアタッチ] ダイアログのスクリーンショット。[接続の種類] が [Docker (Windows コンテナー)] に設定され、dotnet.exe プロセスが選択されています。