Como acessar um contêiner docker a partir de um dispositivo que esteja na mesma rede que o host do docker?

0

Eu tenho um contêiner do docker em execução no meu host linux na rede de ponte do docker padrão. O contêiner pode alcançar a internet. ( wget -qO- google.com works) ifconfig mostra o ip 172.17.0.2. Meu laptop que está conectado à mesma rede do meu servidor. Ele pode ping meu servidor e meu servidor pode ping meu laptop e meu contêiner docker pode ping meu laptop, mas meu laptop não pode ping meu contêiner docker. (Meu servidor pode pingar meu contêiner também.) Com o uso do wireshark descobri que o ping do docker containers vem do ip do meu servidor.

Eu li que o contêiner docker se conecta à Internet usando o mascarado quando se conecta usando o adaptador de ponte. (não sabe onde) Eu li sobre o masquerade :

"Há uma pequena ressalva e é que a função de mascaramento quase sempre funciona apenas em uma direção, ou seja, os hosts mascarados podem fazer chamadas, mas eles não podem aceitar ou receber conexões de rede de hosts remotos."

Há quase nesta frase, por isso não tenho certeza se isso é verdade para o docker.

Então, minha pergunta é se eu posso de alguma forma iniciar uma conexão com meu contêiner docker (na minha configuração atual) do meu laptop?  Por quê? / Por que não?

O que seria necessário para isso? (Eu sei sobre -publish)

    
por raldone01 28.08.2018 / 23:03

2 respostas

-1

Você pode criar seu contêiner como um servidor SSH e, em seguida, enviar o ssh ao seu contêiner a partir do seu laptop.

Para mais detalhes sobre como fazer isso, consulte Dockerize um serviço SSH .

Atualizar

Para o contêiner docker, até onde eu sei, ele só tem duas maneiras de se conectar à Internet.

Um é expor a porta ao host. Outra é através do controlador de ingresso.

Caso contrário, todos não poderão se conectar ao contêiner pela Internet, exceto o host do contêiner.

    
por 29.08.2018 / 11:31
-1

Por padrão, os contêineres Docker se conectam a uma rede de ponte em execução no host (pense em sua rede local como a WAN / Internet e o Docker de rede cria como uma LAN e o host Docker como um roteador)

Você pode expor portas usando docker run -p , que cria uma regra NAT do endereço IP do host para o endereço IP do contêiner (como se você configurasse o encaminhamento de porta no roteador para acessar um dispositivo dentro da rede privada da Internet)

Você também pode configurar o roteamento no host para que a rede de ponte do Docker esteja diretamente acessível. Para fazer isso, você precisa ter certeza de que o host tem o encaminhamento de IP ativado, você precisa ter certeza de que o firewall do host do Docker permitirá conexões de entrada para o endereço IP do container, e você precisa configurar o roteamento em sua rede gateway) para rotear os endereços IP da ponte Docker Bridge para o endereço IP do host

Além dessas opções, você pode procurar outras formas de configurar a rede do Docker se a documentação oficial link

Além desses métodos, você também pode conectar o SSH ao host e criar um túnel SSH para o contêiner. Por exemplo, se o host do Docker for 10.0.0.2 e o contêiner tiver um endereço IP 172.17.0.1 e você quiser acessar o nginx na porta 8080, será possível fazer ssh -L 8080:172.17.0.1:8080 10.0.0.2 , que redirecionará a porta 8080 na inicialização da máquina. a conexão SSH para 8080 no container

    
por 12.09.2018 / 02:07