Porta de mapeamento para acessar a interface web

1

Eu tenho um servidor barebones, rodando Linux, mas nenhuma interface gráfica está instalada. Está funcionando apenas na linha de comando e não queremos mudar isso.

O endereço IP deste servidor é 192.168.1.6

Nesta máquina, corremos o Docker para usar vários containers. Um dos contêineres é um aplicativo da web acessível pela porta 80 .

Quando eu curl localhost no meu Linux barebones eu tenho os dados brutos da página da web. Eu gostaria de ver o aplicativo da web de todos os computadores na mesma LAN. Por exemplo, na máquina 192.168.1.7 , gostaria de digitar um navegador 192.168.1.6 e ver o aplicativo da web.

Primeiro de tudo, é possível? Se sim, você pode me fornecer algumas orientações?

    
por Raccoon 27.07.2018 / 09:33

1 resposta

0

Existem muitas maneiras de fazer isso, o mais simples é usar as redes internas do Docker.

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
6ef2c6836690        bridge              bridge              local
db24b1e2be58        host                host                local
edf606d533a5        none                null                local

Por padrão, seu contêiner entra na rede bridge , a menos que você diga de outra forma durante o docker run... .

$ docker run -P -d -p 12345:80 nginxdemos/hello

Depois de fazer isso, qualquer host na LAN pode acessá-lo usando o IP do Docker Host + a porta:

$ curl -I http://192.168.56.101:12345/
HTTP/1.1 200 OK
Server: nginx/1.13.8
Date: Fri, 27 Jul 2018 08:26:02 GMT
Content-Type: text/html
Connection: keep-alive
Expires: Fri, 27 Jul 2018 08:26:01 GMT
Cache-Control: no-cache

Firewalls

Lembre-se de que o firewall do Host do Docker pode ser a causa do tráfego que não entra / sai do contêiner do Docker. Em algumas situações, você pode precisar adicionar a porta do Host do Docker (12345 no meu exemplo acima) a uma lista de permissões para que os hosts fora do Docker Host possam acessar essa porta.

Referências

por 27.07.2018 / 10:33