Partilhar 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 Windows Docker ou em um contêiner do Linux .NET Core Docker usando o Visual Studio.

Pré-requisitos

Se ainda não estiver presente no servidor Linux, você precisa 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 SFTP (Secure File Transfer Protocol) também deve estar habilitado. A maioria das distribuições SSH instala e habilita o SFTP por padrão, mas nem sempre é esse o caso.

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

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

Importante

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

Observação

Pode usar estas instruções para ligar ao Docker no Linux que está a ser executado no WSL através de SSH, mas a sua instância WSL deve primeiro executar um servidor SSH. Por exemplo, você pode instalar o Open SSH Server (por exemplo: sudo apt-get install openssh-server), configurar o servidor editando o arquivo de configuração (por exemplo: /etc/ssh/sshd_config) e, em seguida, iniciar o servidor (por exemplo: sudo service ssh start).

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

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

    Screenshot da janela Anexar ao Processo no Visual Studio mostrando um tipo de conexão do Docker (contêiner Linux).

  3. Selecione Localizar... para definir o alvo de conexão por meio da 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 de host da CLI do Docker como Máquina Local.

      2. Selecione um contentor em execução da lista ao qual deseja ligar-se e pressione OK.

        Captura de tela do menu de contêiner do Docker selecionado.

        Captura de tela do menu de contêiner do Docker selecionado.

    • 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 das duas opções. A primeira opção, usar SSH, é ideal se você não tiver ferramentas do Docker instaladas em sua máquina local. Se você tiver as ferramentas do Docker instaladas localmente e tiver um daemon do Docker configurado para aceitar solicitações remotas, tente a segunda opção, usando um daemon do Docker.

      • Para se conectar a uma máquina remota via SSH:

        1. Selecione Adicionar... para se conectar a um sistema remoto.
          Captura de ecrã de Ligar a um sistema remoto.
          Captura de ecrã de Ligar a um sistema remoto.
        2. Insira as informações de conexão necessárias e escolha Connect.
        3. Depois de se conectar ao SSH, selecione um contêiner em execução ao qual anexar e, em seguida, escolha OK.
      • Para definir o destino para 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 e assim por diante) em host do Docker (opcional)e, em seguida, escolha Atualizar.
        2. Depois de se conectar ao daemon com êxito, selecione um contêiner em execução ao qual anexar e, em seguida, escolha OK.
  4. Escolha o processo de contentor correspondente na lista de processos disponíveis e selecione Associar para começar a depurar o seu processo de contentor C# no Visual Studio!

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

    Captura de ecrã da caixa de diálogo Anexar ao Processo no Visual Studio. O tipo de conexão é definido como Docker (Linux Container) e o processo dotnet é selecionado.

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

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

Importante

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

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

  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 alvo de Conexão usando a caixa de diálogo Selecionar Container do Docker.

    Importante

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

    A configuração do destino para um contêiner remoto via SSH não está disponível no momento e só pode ser feita usando um daemon do Docker.

    Para definir o destino para 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 e assim por diante) em host do Docker (opcional) e escolha Atualizar.

    2. Depois de se conectar ao daemon com êxito, selecione um contêiner em execução ao qual anexar e, em seguida, escolha OK.

  4. Escolha o processo de contêiner correspondente na lista de de processos disponíveis e selecione Anexar para começar a depurar seu processo de contêiner C#.

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

    Captura de ecrã da caixa de diálogo Anexar ao processo no Visual Studio. O tipo de conexão é definido como Docker (Contentor do Windows) e o processo dotnet.exe é selecionado.