Compartilhar via


Anexar a um processo em execução em um contêiner do Docker

Você pode depurar aplicativos em execução em um Contêiner do Docker do Windows ou em um contêiner do Docker do .NET Core no Linux usando o Visual Studio.

Pré-requisitos

Se ele ainda não estiver presente no servidor Linux, você precisará instalar o servidor SSH, descompactar e instalar com curl ou wget. Por exemplo, no Ubuntu, você pode fazer isso executando:

sudo apt-get install openssh-server unzip curl

O Protocolo de transferência de arquivos seguro (SFTP) também deve estar habilitado. A maioria das distribuições SSH instala e habilita o SFTP por padrão, mas nem sempre é o caso.

Anexar a um processo em execução em um contêiner do Docker Linux

Você pode anexar o depurador do Visual Studio a um processo em execução em um contêiner do Docker do .NET Core no Linux em um computador local ou remoto usando a caixa de diálogo Anexar ao Processo.

Importante

Para usar esse recurso, você deve ter acesso local ao código-fonte.

Para anexar a um processo em execução em um contêiner do Docker do Linux:

  1. No Visual Studio, selecione Depurar > Anexar ao Processo (CTRL+ALT+P) para abrir a caixa de diálogo Anexar ao Processo.

  2. Defina o Tipo de conexão como Docker (Contêiner do Linux).

    Captura de tela da caixa de diálogo Anexar ao Processo no Visual Studio mostrando um Tipo de conexão do Docker (Contêiner do Linux).

    Captura de tela da caixa de diálogo Anexar ao Processo no Visual Studio mostrando um Tipo de conexão do Docker (Contêiner do Linux).

  3. Selecione Localizar... para definir o Destino de conexão usando a caixa de diálogo Selecionar Contêiner do Docker.

    Você pode depurar um processo de contêiner do Docker local ou remotamente.

    • Para depurar um processo de contêiner do Docker localmente:

      1. Defina o Host da CLI do Docker como Computador Local.

      2. Selecione um contêiner em execução ao qual anexar na lista e clique em OK.

        Captura de tela do menu de seleção de contêiner do Docker.

        Captura de tela do menu de seleção de contêiner do Docker.

    • Para depurar um processo de contêiner do Docker remotamente:

      Você pode se conectar a um processo em execução em um contêiner do Docker usando uma de duas opções. A primeira opção, de usar o SSH, é ideal se você não tem ferramentas do Docker instaladas no computador local. Se você tem ferramentas do Docker instaladas localmente e tem um daemon do Docker configurado para aceitar solicitações remotas, tente a segunda opção usando um daemon do Docker.

      • Para se conectar a um computador remoto via SSH:

        1. Selecione Adicionar... para se conectar a um sistema remoto.
          Captura de tela de Conectar a um Sistema Remoto.
          Captura de tela de Conectar a um Sistema Remoto.
        2. Insira as informações de conexão necessárias e escolha Conectar.
        3. Após conectar ao SSH, selecione um contêiner em execução para anexar e, em seguida, escolha OK.
      • Para definir o destino como um contêiner remoto executando um processo por meio de um daemon do Docker:

        1. Especifique o endereço do daemon (ou seja, via TCP, IP etc.) em Host do Docker (Opcional) e escolha Atualizar.
        2. Após se conectar ao daemon com êxito, selecione um contêiner em execução para anexar e, em seguida, escolha OK.
  4. Escolha o processo de contêiner correspondente na lista de Processos disponíveis e selecione Anexar para iniciar a depuração do processo de contêiner C# no Visual Studio.

    Captura de tela da caixa de diálogo Anexar ao Processo no Visual Studio. O tipo de conexão é definido como Docker (Contêiner do Linux) e o processo dotnet está selecionado.

    Captura de tela da caixa de diálogo Anexar ao Processo no Visual Studio. O tipo de conexão é definido como Docker (Contêiner do Linux) e o processo dotnet está selecionado.

Anexar a um processo em execução em um contêiner do Docker Windows

Você pode anexar o depurador do Visual Studio a um processo em execução em um contêiner do Docker do Windows em um computador local usando a caixa de diálogo Anexar ao Processo.

Importante

Para usar esse recurso com um processo do .NET Core, você precisa instalar a carga de trabalho Desenvolvimento Multiplataforma do .NET Core e ter acesso local ao código-fonte.

Para anexar a um processo em execução em um contêiner do Docker do Windows:

  1. No Visual Studio, selecione Depurar > Anexar ao Processo (ou CTRL+ALT+P) para abrir a caixa de diálogo Anexar ao Processo.

  2. Defina o Tipo de conexão como Docker (Contêiner do Windows).

    Captura de tela da caixa de diálogo Anexar ao Processo no Visual Studio mostrando um Tipo de conexão do Docker (Contêiner do Windows).

    Captura de tela da caixa de diálogo Anexar ao Processo no Visual Studio mostrando um Tipo de conexão do Docker (Contêiner do Windows).

  3. Selecione Localizar... para definir o Destino de conexão usando a caixa de diálogo Selecionar Contêiner do Docker.

    Importante

    O processo de destino precisa ter a mesma arquitetura de processador que o contêiner do Docker do Windows em que ele está sendo executado.

    A configuração do destino como um contêiner remoto por meio do SSH está indisponível no momento e só pode ser feita usando um daemon do Docker.

    Para definir o destino como um contêiner remoto executando um processo por meio de um daemon do Docker:

    1. Especifique o endereço do daemon (ou seja, via TCP, IP etc.) em Host do Docker (Opcional) e, em seguida, escolha Atualizar.

    2. Após se conectar ao daemon com êxito, selecione um contêiner em execução para anexar e, em seguida, escolha OK.

  4. Escolha o processo de contêiner correspondente na lista de Processos disponíveis e selecione Anexar para iniciar a depuração do processo de contêiner C#.

    Captura de tela da caixa de diálogo Anexar ao Processo no Visual Studio. O tipo de conexão é definido como Docker (Contêiner do Windows) e o processo dotnet.exe está selecionado.

    Captura de tela da caixa de diálogo Anexar ao Processo no Visual Studio. O tipo de conexão é definido como Docker (Contêiner do Windows) e o processo dotnet.exe está selecionado.