A possibilidade de desenvolver em ambientes isolados traz muitos benefícios, mas ao mesmo tempo requer que
para cada um dos contêineres, futuramente, sejam estabelecidas as conexões de rede necessárias, para que assim
as aplicações possam se comunicar com outras dentro ou fora do host.
Port Mapping
O mapeamento de portas, ou port mapping, é uma técnica usada em diferentes drivers de rede do Docker
para expor portas de contêineres para o host ou para outras partes da rede. Com uso do Docker Deamon, o
procedimento é feito para conectar duas portas de diferentes ambientes e permitir que através desse link sejam
trocadas requisições e/ou dados. Isso permite que aplicativos em contêineres sejam acessíveis para fora do
contêiner ou do host, possibilitando a comunicação com outros contêineres ou sistemas externos. Por exemplo,
você pode usar o mapeamento de portas para direcionar solicitações HTTP de um contêiner web para a porta 80 do host,
permitindo que o aplicativo web seja acessado por clientes externos, ou mesmo realizar interações entre contêineres
e/ou programas em uma mesma máquina.
Drivers de Rede
Os drivers de rede no Docker são responsáveis por configurar a rede de comunicação dos contêineres. Existem diferentes opções desses no
Docker, cada um com suas características e casos de uso específicos, os principais sendo:
Bridge Network Driver: É o driver padrão usado para conectar contêineres em uma mesma
máquina física. Ele
cria uma rede privada virtual para os contêineres e configura um NAT (Network Address Translation) para
permitir que eles se comuniquem entre si e com o host.
Macvlan Network Driver: Permite que contêineres tenham endereços MAC e IPs próprios na
rede, como se fossem
máquinas físicas separadas. Isso é útil para casos em que os contêineres precisam se integrar diretamente à
rede física do host.
Host Network Driver: Este driver remove o isolamento da rede entre o contêiner e o host,
fazendo com que o
contêiner compartilhe a mesma interface de rede do host. Isso pode ser útil para aplicativos que exigem
acesso direto aos dispositivos de rede do host ou alto desempenho de rede.
Overlay Network Driver: Este driver é usado para conectar contêineres em diferentes hosts
em um cluster
Docker Swarm. Ele cria uma rede overlay que abrange vários hosts e permite que os contêineres se comuniquem
entre si, independentemente de sua localização física.
None Network Driver: É um driver disponível no Docker que desabilita completamente a rede
para um contêiner.
Quando este driver é utilizado, o contêiner não terá acesso à rede externa nem mesmo à rede local do host.
Isso significa que o contêiner estará isolado da rede e não poderá se comunicar com outros contêineres,
serviços externos ou a internet. O uso desse driver pode ser útil em cenários específicos, como contêineres
que executam tarefas isoladas sem a necessidade de acesso à rede, ou para fins de segurança, quando se
deseja limitar estritamente a conectividade de um contêiner.
Docker vs Máquinas Virtuais e Kubernetes
São comuns confusões entre Docker e máquinas virtuais (VMs), mas essas são tecnologias diferentes,
embora ambas sejam usadas para isolar e executar aplicativos. As VMs virtualizam todo o hardware do
sistema, permitindo que vários sistemas operacionais e aplicativos sejam executados em uma única máquina
física. Por outro lado, o Docker virtualiza apenas o sistema operacional e os recursos necessários para
executar um aplicativo específico, permitindo que múltiplos contêineres compartilhem o mesmo kernel do
sistema operacional. Isso torna os contêineres mais leves e mais eficientes em termos de recursos do que
as VMs. Já Kubernetes, é uma plataforma de orquestração de contêineres que automatiza o dimensionamento, a
distribuição e a operação de aplicativos em contêineres. Ele pode ser usado em conjunto com o Docker para
gerenciar e coordenar grandes clusters de contêineres em ambientes de produção, mas não o substitui.
https://i.ytimg.com/vi/TvnZTi_gaNc/maxresdefault.jpg