Como executar vários contêineres do Docker em diferentes endereços IP

O Docker facilita a execução de aplicativos usando soluções de nuvem sem servidor, mas muitas pessoas preferem gerenciar vários contêineres executados em algumas máquinas poderosas. Nesse caso, usar vários endereços IP pode ser uma ótima maneira de gerenciar vários serviços na mesma porta.
Como funcionam as interfaces de rede?
O Linux u.s. interfaces de rede para representar {hardware} físico, além de criar componentes de rede digital como VLANs, pontes ou aliases. Se você listar todos os dispositivos em seu sistema com ip addr display
você encontrará várias interfaces como eth0
e eno1
que representam conexões reais.
Os endereços IP são um sistema separado das interfaces de rede, mas, essencialmente, você pode ter vários endereços IP configurados em uma única interface, permitindo vincular serviços a soquetes de rede para cada IP:PORT
combinação.
Isso funciona bem com o Docker, que permite lidar com a rede no nível do Docker em vez do nível do aplicativo. Com o Docker, o aplicativo dentro do contêiner pode apenas se vincular à “porta 80”, que é mapeada pelo Docker para um endereço IP específico no host.
Isso torna muito mais fácil separar a camada de aplicação do host que a está executando. Por exemplo, você pode ter vários serviços de API diferentes em execução na mesma máquina, sem configurar os contêineres subjacentes.
Não importa realmente para o Docker em qual interface do sistema o endereço IP está, pois a rede interna do Docker cuidará disso para você, desde que você inicie os contêineres com a configuração correta.
Executando vários dockers Serviços no mesmo servidor
Executar um contêiner em um endereço específico é muito fácil, dependendo de como você o inicia. Essencialmente, a maioria dos contêineres do Docker tem suas portas configuradas com o host:container
formato. Por exemplo, 5000:80
pegaria a porta 80 do contêiner e a disponibilizaria na porta 5000 do host.
No entanto, você pode vincular soquetes diretamente, ou seja, em vez de 5000
você pode substituir um IP:PORT
par, usando três dois-pontos para toda a ligação:
docker run -it -d ipaddress:hostport:containerport --name internet nginx
Então, por exemplo, você pode ter dois contêineres NGINX em IPs diferentes, assim (lembre-se, o Docker precisa de nomes de contêiner separados):
docker run -it -d 123.0.0.1:80:80 --name internet nginx docker run -it -d 123.0.0.2:80:80 --name web2 nginx
Se você estiver usando o Docker Compose, a configuração será semelhante. No ports
seção para o serviço, você pode usar a mesma sintaxe para vincular a endereços específicos.
model: "3" services and products: nginx: symbol: nginx restart: at all times ports: - "123.0.0.1:80:80"
Em ambos os casos, você pode criar vários serviços vinculados à porta 80 do host, desde que os serviços não escutem nos mesmos endereços IP.
Se você estiver fazendo isso, no entanto, você vai querer ter certeza de que nenhum contêiner está escutando apenas a porta — isso será uma configuração incorreta, pois omitir o endereço IP significa que ele escutará em todos os endereços dessa interface.
Como você obtém vários endereços IP?
A maioria dos servidores vem com apenas um único endereço IP, portanto, você pode ter que configurar outros por conta própria.
A configuração de vários IPs por servidor dependerá do host que você está usando. Por exemplo, a AWS tem seu serviço “Elastic IP”, que é gratuito se você estiver usando um IP por máquina. No entanto, se você quiser comprar endereços IP elásticos adicionais, poderá associá-los a qualquer servidor. Você vai pagar $ 3,65 por mês para cada um.
Alguns serviços permitem a compra única de endereços IP, como a OVH, que permite a compra de blocos até /24.
Se você deseja comprar blocos grandes e contíguos de endereço IP para você realmente possuir, você pode fazê-lo através de várias corretoras, embora isso geralmente incorra em uma grande taxa e seja principalmente para grandes organizações.
Depois de ter os endereços IP, cabe ao seu provedor de nuvem apontá-los para o seu endereço. No entanto, cabe a você configurar sua interface de rede para usá-la, usando uma ferramenta como netplan
.
Fonte da Notícia: www.howtogeek.com