Expor porta do Docker internamente

1

Gostaria de executar um contêiner do Docker que expõe apenas suas portas INTERNALMENTE dentro da instância do docker no mesmo host. Isso significa que eu não quero que seja público.

Como se faz isso a partir da linha de comando? O código abaixo abre publicamente.

docker run -p 27017:27017 --name mongo mongo
    
por Karl Morrison 24.01.2017 / 19:52

3 respostas

1

Se você executar:

docker run -p 27017:27017 --name mongo mongo

Em seguida, o docker interpreta isso como:

docker run -p 0.0.0.0:27017:27017 --name mongo mongo

O que significa que a porta é acessível a partir do host, mas também externamente.

Você pode verificar isso executando nmap -p 27017 <host IP> de uma máquina diferente no seu host. Port 27017 deve aparecer como 'aberto'.

Se você executar:

docker run -p 127.0.0.1:27017:27017 --name mongo mongo

Em seguida, a porta só é acessível a partir do host.

Você pode verificar isso executando nmap -p 27017 <host IP> de uma máquina diferente no seu host. Port 27017 deve aparecer como 'fechado'.

Finalmente, se você executar:

docker run --name mongo mongo

Em seguida, todas as portas serão locais para o contêiner.

Novamente, você pode verificar isso executando nmap em seu host no contêiner: nmap -p 27017 <container IP> . Port 27017 deve aparecer como 'fechado'.

    
por 05.03.2017 / 07:07
0

Se você correr

docker run --name mongo mongo

outros contêineres poderão acessar o mongo, mas SOMENTE se eles souberem o ip do contêiner mongo, mas não será permitido acesso externo ao host

Além disso, o seguinte impedirá que máquinas fora do host acessem mongo

docker run -p 127.0.0.1:27017:27017 --name mongo mongo

ainda outros contêineres podem acessá-lo se souberem o ip

    
por 29.04.2017 / 16:18
0

A --expose -tag do comando run do Docker deve fornecer o que você deseja. A partir da documentação :

Publique ou exponha a porta (-p, --expose)

$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

Isso liga a porta 8080 do contêiner à porta TCP 80 no 127.0.0.1 da máquina host. Você também pode especificar as portas udp e sctp. O Guia do Usuário do Docker explica em detalhes como manipular portas no Docker.

$ docker run --expose 80 ubuntu bash

Isso expõe a porta 80 do contêiner sem publicar a porta nas interfaces do sistema host.

Quando você EXPONHA uma porta para um contêiner, é acessível somente na rede do contêiner ( bridge por padrão). Isso é útil para executar vários contêineres em uma rede e fazer com que eles se comuniquem, sem publicar suas portas externamente (por exemplo, por motivos de segurança).

    
por 29.03.2018 / 18:38

Tags