1
resposta

[Dúvida] network host

Estou tentado usar o network host, porém não consigo acessar a aplicação.

Estou criando um contêiner com a seguinte comando:

docker run -d --network host aluradocker/app-node:1.0

Ao inspecionar o conteiner ele está utilizando a rede host:

 "MacAddress": "",
            "Networks": {
                "host": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "MacAddress": "",
                    "NetworkID": "4626761a85f972eb2bf686c38280c9928f1e9b32de4e70ca1573a49b31601aca",
                    "EndpointID": "4fc837b5c930197a4f93a4d360fce2e044dca826eced2db59f5ee34af6ecf426",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DriverOpts": null,
                    "DNSNames": null
                }
            }

Alguém poderia me explicar o que estou fazendo de errado?

1 resposta

Olá, Oseanes!

Quando você usa a opção --network host no Docker, o contêiner compartilha o mesmo espaço de rede do host, ou seja, ele não recebe um endereço IP próprio dentro de uma rede isolada, mas sim utiliza diretamente o endereço IP do host. Isso significa que a aplicação dentro do contêiner deve ser acessível nas mesmas portas que estaria se estivesse rodando diretamente no host.

Uma coisa importante a verificar é se a aplicação dentro do seu contêiner está configurada para escutar no endereço IP correto. Muitas aplicações, por padrão, escutam apenas no localhost (127.0.0.1). Para que elas sejam acessíveis usando --network host, elas precisam ser configuradas para escutar em todos os endereços IP disponíveis na máquina host, geralmente configurando o servidor para escutar em 0.0.0.0.

Por exemplo, se sua aplicação é um servidor web Node.js, você deve garantir que ele está configurado para escutar em 0.0.0.0 ao invés de 127.0.0.1. Aqui está um exemplo de como você pode configurar um servidor Express para fazer isso:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Olá, mundo!');
});

app.listen(3000, '0.0.0.0', () => {
  console.log('Aplicação escutando em todas as interfaces!');
});

Se sua aplicação já está configurada corretamente para escutar em 0.0.0.0 e você ainda não consegue acessá-la, vale a pena verificar se há alguma firewall ou configuração de segurança no host que possa estar bloqueando o acesso às portas utilizadas pela sua aplicação.

Bons estudos!