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.

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).

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

  2. 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.

    Menu de seleção do Contêiner do Docker

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

    Observação

    Há duas opções para se conectar remotamente a um processo em execução em um contêiner do Docker. 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.

    1. Para se conectar a um computador remoto via SSH:

      1. Selecione Adicionar... para se conectar a um sistema remoto.
        Conectar-se a um sistema remoto
      2. Selecione um contêiner em execução ao qual anexar depois de se conectar ao SSH ou daemon com êxito e pressione OK.
    2. 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.) no Host do Docker (Opcional) e clique no link de atualização.
      2. Selecione um contêiner em execução ao qual anexar depois de se conectar ao daemon com êxito e pressione OK.
  3. 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.

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.

    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).

  2. Defina o Tipo de conexão como 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.) no Host do Docker (Opcional) e clique no link de atualização.

    2. Selecione um contêiner em execução ao qual anexar depois de se conectar ao daemon com êxito e 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.