次の方法で共有


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 デバッガーをアタッチできます。

重要

この機能を使うには、ソース コードへのローカル アクセス権を持っている必要があります。

Note

次の手順を使用して、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 コンテナー内の実行中のプロセスにアタッチするには:

  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 プロセスが選択されています。