Alô galera! Estamos de volta trazendo a segunda parte da série sobre Docker.
No primeiro post apresentamos o docker e seu funcionamento, abrangendo a arquitetura (cliente, daemon, socket, etc.), os recursos principais que compõem o docker (imagem, container e registro), além de outros componentes utilizados. No final do post apresentamos o fluxo básico das ações tomadas para rodar uma aplicação através do docker. Nos próximos posts mostraremos esse fluxo na prática, estudando os principais comandos e a utilização de cada um deles. Antes de prosseguirmos no entanto, é necessário entendermos o modo de gerenciamento de redes do docker.
Na prática um container pode ser definido como uma instância, que possui sistema operacional, processos, área de armazenamento e ambiente de rede (endereço IP, gateway, máscara de rede, etc). No entanto, sabemos que um único host pode executar diversos containers, logo, cada container deve fornecer um ambiente isolado, tanto de outros containers quanto do próprio host.
Vimos no primeiro post que o docker usa o recurso do kernel linux namespace para isolar os containers em nível de processos. Esse isolamento garante que os processos de um determinado container não interfiram nos processos de outros, ou nos processos do host. Agora veremos como o docker trata o isolamento de containers em nível de rede.