NSENTER
O nsenter
é uma ferramenta de linha de comando que permite acessar namespaces de processos no Linux. Namespaces são um recurso do kernel Linux que permite a virtualização de recursos do sistema, como processos, redes, usuários e sistemas de arquivos. Essa virtualização permite a criação de ambientes isolados, como contêineres.
O nsenter é usado em situações em que o daemon do Docker não está respondendo e o comando docker exec
não esteja funcionando. O nsenter vai conseguir logar no container.
O comando nsenter
é usado para ingressar (enter) namespaces de processos existentes. Ele pode ser útil em várias situações, incluindo:
Depuração de Contêineres: Permite acessar o namespace de processos de um contêiner em execução para depurar problemas ou inspecionar o ambiente interno do contêiner.
Interagir com o Namespace de Rede: Permite configurar manualmente a rede dentro de um contêiner ou acessar a configuração de rede de um contêiner em execução.
Acesso a Outros Namespaces: Permite ingressar em namespaces de outros processos, como namespaces de usuário ou namespaces de sistemas de arquivos, para realizar tarefas específicas.
É importante observar que o nsenter
pode ser uma ferramenta poderosa mas também pode ser perigosa se usada incorretamente, pois permite acesso direto aos namespaces do sistema. Por esse motivo, deve ser usada com cuidado e conhecimento adequado do ambiente e dos namespaces em questão.
Para entrar num container, podemos usar:
# Obtenha o PID do container com ID = 1b650f8c3a08:
PID=$(docker inspect --format '{{ .State.Pid }}' 1b650f8c3a08)
# Logue no container:
sudo nsenter --target $PID --uts --ipc --net --pid