Como se conectar ao localhost dentro de um contêiner Docker Como instalar o Kubernetes Cert-Manager e configurar o Let’s Encrypt Como usar Git Hooks para automação de commits Como conectar a compartilhamentos de rede com o aplicativo iOS Files Como usar Enums em PHP 8.1 Como passar o ambiente Variáveis ​​para contêineres Docker Como fazer backup de seu servidor GitLab


0

Ilustração mostrando o logotipo do Docker

Ao trabalhar com o Docker, você geralmente coloca em contêiner os serviços que formam sua pilha e usa a rede entre contêineres para se comunicar entre eles. Às vezes, você pode precisar de um contêiner para se comunicar com um serviço em seu host que não foi armazenado em contêineres. Veja como acessar localhost ou 127.0.0.1 de dentro de um contêiner do Docker.

A opção fácil

Suporte para Docker Desktop 18.03+ para Windows e Mac host.docker.internal como um alias funcional para localhost. Use esta string dentro de seus contêineres para acessar sua máquina host.

  • localhost e 127.0.0.1 – Estes resolvem para o recipiente.
  • host.docker.internal – Isso é resolvido para o host externo.

Se você estiver executando um servidor MySQL em seu host, os contêineres Docker podem acessá-lo conectando-se a host.docker.internal:3306. Esta é a técnica mais simples quando você está trabalhando em uma máquina Windows ou Mac.

Os usuários do Docker Engine no Linux podem habilitar host.docker.internal também através do --add-host bandeira para docker run. Comece seus contêineres com este sinalizador para expor a string do host:

docker run -d --add-host host.docker.internal:host-gateway my-container:latest

o --add-host sinalizador adiciona uma entrada ao contêiner /etc/hosts Arquivo. O valor mostrado acima mapeia host.docker.internal para o gateway de host do contêiner, que corresponde ao real localhost valor. Você poderia substituir host.docker.internal com sua própria corda, se preferir.

Conectando-se à rede do host

Docker fornece um host rede que permite que os contêineres compartilhem a pilha de rede do seu host. Esta abordagem significa localhost dentro de um contêiner é resolvido para o host físico, em vez do próprio contêiner.

Propaganda

Os contêineres são iniciados com a rede host adicionando o --network=host bandeira:

docker run -d --network=host my-container:latest

Agora seu contêiner pode fazer referência localhost ou 127.0.0.1 diretamente.

Se você estiver usando o Docker Compose, modifique a definição de serviço do seu contêiner para incluir o network_mode campo:

services:
  my-service:
    network_mode: host

Existem algumas ressalvas a esta abordagem. É importante considerar todas as implicações antes de usá-lo. Os contêineres normalmente obtêm sua própria rede privada, que é separada da pilha do host. Quando você especifica --network=host, o padrão do contêiner é herdar as configurações de rede compartilhada de seu host.

Todas as portas expostas pelo contêiner serão expostas no hospedeiro, mesmo que não sejam declarados explicitamente com o -p bandeira. O nome do host padrão do contêiner corresponderá ao do host, embora isso possa ser alterado com o --hostname bandeira.

A rede do host pode ser uma preocupação de segurança que quebra o modelo de isolamento dos contêineres Docker. Ele ainda pode ser útil em cenários em que você tem certeza de que a execução de contêineres não entrará em conflito uns com os outros ou causará problemas em seu ambiente de host. O modo de rede do host também é mais rápido do que o modo de ponte padrão, pois não há camada de virtualização para a passagem do tráfego.

Acessando o host com o modo de ponte padrão

Seu host ainda pode ser acessado a partir de contêineres no padrão bridge modo de rede. Você só precisa referenciá-lo por seu IP de rede Docker, em vez de localhost ou 127.0.0.1.

Propaganda

A maioria das instalações do Docker Engine representará o host como 172.17.0.1 no padrão docker0 rede de ponte. Você pode verificar seu próprio IP executando este comando em seu host:

ip addr show docker0

O IP Docker do seu host será mostrado no inet linha. Conecte-se a este endereço IP de dentro de seus contêineres para acessar com êxito os serviços em execução em seu host.

Uma armadilha dessa abordagem é que você pode não ser capaz de se conectar a serviços que se ligam diretamente a localhost. Você precisará certificar-se de que seus serviços estão ouvindo conexões em seu IP de ponte Docker, bem como localhost e 127.0.0.1. Caso contrário, você verá connection refused ou erros semelhantes em seu contêiner.

Resumo

Você tem várias opções quando precisa chegar fora de um contêiner do Docker para a localhost. Se você estiver no Windows ou Mac, é melhor usar o integrado host.docker.internal alias. Os usuários do Linux podem configurar algo semelhante com o --add-host sinalizar ao iniciar um contêiner.

O modo de rede do host é uma alternativa universal que permite que os contêineres compartilhem a pilha de rede do seu host. Você pode fazer referência localhost diretamente, mas precisa estar ciente dos riscos e limitações. Não é uma opção adequada quando é necessário um forte isolamento de rede.

Propaganda

Manter o modo bridge pode ser a melhor opção para cargas de trabalho que o suportam. Vincule os serviços do seu host ao IP do Docker e use esse endereço para se conectar de dentro do seu contêiner. Isso permite que você use a rede virtualizada por contêiner do Docker enquanto fornece uma rota para o seu host quando necessário.


Like it? Share with your friends!

0

What's Your Reaction?

hate hate
0
hate
confused confused
0
confused
fail fail
0
fail
fun fun
0
fun
geeky geeky
0
geeky
love love
0
love
lol lol
0
lol
omg omg
0
omg
win win
0
win

0 Comments

Your email address will not be published. Required fields are marked *

Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Meme
Upload your own images to make custom memes
Video
Youtube, Vimeo or Vine Embeds
Audio
Soundcloud or Mixcloud Embeds
Image
Photo or GIF
Gif
GIF format