Como obter o endereço IP de um contêiner do Docker do host Como usar ganchos Git para automação de commit O que é “JAM Stack?” Você deve usá-lo? Como você corrige um “HEAD destacado” em um repositório Git? Como passar variáveis ​​de ambiente para contêineres do Docker 7 maneiras como os contêineres permitem que você envie software mais rápido Como usar enums no PHP 8.1


0

Os contêineres do Docker não são apenas isolamento – eles costumam ser usados ​​para gerenciar processos que ainda precisam se comunicar diretamente. Mas, para se comunicar, você frequentemente precisará saber o endereço IP de cada contêiner, que pode ser encontrado com alguns comandos.

Considere o uso de uma ponte definida pelo usuário

A rede Docker é um pouco complicada. Os contêineres iniciados por padrão serão colocados na “rede de ponte” padrão e podem se comunicar diretamente com outros contêineres, desde que você tenha seu endereço IP privado. Isso pode ser desativado para verdadeiro isolamento, mas não é por padrão.

Você também pode usar este endereço para se comunicar a partir do sistema operacional host, se não quiser vincular uma porta. Este é o principal caso de uso de acessar um contêiner diretamente por meio de seu endereço IP, mas provavelmente você ainda deve apenas vincular uma porta (você pode mantê-la fechada da Internet em seu firewall).

No entanto, os endereços IP são efêmeros e podem quebrar facilmente quando os contêineres são interrompidos e iniciados. Para comunicação entre contêineres, o Docker fornece uma solução por meio de redes de ponte definidas pelo usuário, que você provavelmente deve usar se tiver vários contêineres conversando entre si.

Os contêineres adicionados a redes não padrão poderão acessar uns aos outros por meio de seu alias, que resolverá para o IP privado automaticamente. Você pode criar novas redes, executar contêineres nessas redes e conectar contêineres existentes à rede. Você pode acessar os outros contêineres usando o alias como um nome de host; por exemplo, o contêiner NGINX aqui pode acessar a instância do MongoDB com a string de conexão mongodb://mongohost:27017.

docker network create example
docker run --net example --name nginx -d nginx
docker network connect example --alias mongohost mongodb
Propaganda

Há muitas vantagens em usar pontes e é recomendado em vez do legado --link opção, que funciona na rede padrão. O principal problema é que os contêineres em redes definidas pelo usuário serão expostos às portas uns dos outros, independentemente de serem publicados, mas você pode configurar várias redes, então isso geralmente não é um problema.

A outra desvantagem é que, como as redes definidas pelo usuário fornecem melhor isolamento, elas também não permitem que você acesse contêineres em redes com seus endereços IP privados. Todos os contêineres na rede padrão podem se comunicar uns com os outros, mas depois que são removidos e colocados em uma rede definida pelo usuário, essa capacidade é desabilitada. No entanto, você também pode simplesmente iniciar o contêiner nas redes padrão e definidas pelo usuário, portanto, não será um problema se você optar por tornar o contêiner visível para outras pessoas.

Obtendo o endereço IP do Docker

Porém, se você quiser apenas o endereço IP, é muito simples obtê-lo no sistema operacional host. Primeiro, você precisa encontrar o ID ou nome do contêiner cujas informações deseja obter, o que pode ser feito com:

docker ps

Então corra docker inspect, que retorna um enorme arquivo JSON com todas as informações sobre o contêiner. No entanto, estamos interessados ​​apenas no endereço IP, então você pode passar uma opção de formatação com -f para restringi-lo apenas ao endereço.

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_or_id

Este comando funciona bem, mas também está retornando informações para um contêiner do qual você precisará do ID. Se você quiser uma solução mais concreta, pode usar docker network inspect que imprime informações sobre todos os contêineres na rede fornecida, opcionalmente, formatando como uma tabela de pesquisa JSON:

docker network inspect bridge -f '{{json .Containers}}'

Obtendo configuração de rede do contêiner

Os contêineres do Docker são, na verdade, apenas um mecanismo de isolamento, e nada o impede de apenas entrar no contêiner e executar comandos regulares do Linux, como ifconfig e obter o endereço IP dessa forma.

Propaganda

Para fazer isso, você precisará obter o nome ou ID do contêiner com docker ps, então corra exec -it, neste caso, imprimindo todas as informações de IP:

docker exec -it b94ef3169cd4 ip a


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