Salve, beleza? Continuando a nossa saga aqui no nosso módulo de Docker. Agora vamos falar sobre redes. Na verdade, a gente acabou usando redes em tudo que a gente estava fazendo aqui de forma implícita. Teve até um momento que teve comunicação ali entre os containers. Nós criamos um Node.js com uma SQL. Então, nós já usamos rede. Agora vamos conhecer os fundamentos sobre isso. Eu preparei também o material que vocês podem acessar lá no repositório. A ideia de rede é muito simples, não tem nenhum segredo. A gente quer fazer um ambiente em que os containers possam se comunicar. E lá no começo do curso, a gente aprendeu sobre namespaces. Lembra que eu falei que nós poderíamos criar uma rede dentro desse namespace, de forma isolada, que os containers poderiam se comunicar? A gente viu o quão legal é o namespace na questão de porta, porque apesar da gente achar que somente aquelas 65 mil portas que estão disponíveis aí na sua máquina, na minha máquina, que estão disponíveis para uso, mas na verdade dentro do namespace eu tenho essas portas para poder utilizar também. Então ficou muito claro que eu posso ter uma porta 80 rodando lá no meu namespace, mas ela não está acessível no meu contexto global. Então a gente consegue criar essas redes, consegue criar IPs, e é o que o Docker está fazendo no final das contas. Mas uma coisa que vai acabar acontecendo, quando o container é criado, obviamente ele vai herdar algumas configurações de rede, como DNS, e o que a gente tem lá dentro do etc.resolve.conf, que vai ter configurações do próprio DNS e outras configurações de rede também. Então, a ideia é a gente criar redes para esses containers se comunicarem e existem vários tipos de redes disponíveis. Então, eu coloquei cinco tipos de redes que são os mais utilizados com o Docker e nós vamos conversar sobre eles aqui nessa aula e alguns deles nós vamos ver nas aulas seguintes. Então, o primeiro deles e o primordial, o padrão quando a gente trabalha com redes, é o modo bridging. Essa imagem aqui simboliza muito bem o que vai ser esse modo bridging. Então, imagina lá que eu estou no container do MySQL, que é esse DB, e o web que é o Node. A princípio, esses containers não conseguem se comunicar. eles tem um IP eles conseguem se comunicar com a rede externa como se eu tivesse um roteador você não tem um roteador na sua casa que você conversa lá com o seu provedor que te libera acesso pra internet? Pois é, o dock também tem um roteador um gateway de saída para esses containers, mas para que eles possam se comunicar, nós temos que ter a rede. A rede bridge faz esse encaminhamento. Então, ela consegue linkar esses containers. Eles já estão ali com os seus IPs. Normalmente, os IPs são 172.17, alguma coisa, mas ele pode variar aqui para 19, para 16, isso depende das configurações da sua máquina, mas normalmente é essa faixa. Então, quando o web é que eu vou me comunicar com o DB, eu tenho o bridge que faz os encaminhamentos, então eu posso passar o IP, que não é muito comum, porque lembra como a gente estava falando que IP, ou melhor, que container é efêmero? O meu container pode morrer, por isso que é ruim trabalhar com o seu container stateful. Porque o container tem esse IP, mas daqui a pouco ele pode morrer, aí é criado com outro IP, a gente não tem garantia. Normalmente, a gente vai ter nomes dentro dessa rede aqui. Como o Docker Compose lá, por exemplo, não tem os nomes dos services, a gente viu que pelo nome dos services eu consigo acessar, então eu tenho um DNS interno que é criado pelo próprio Docker. E se eu não tiver o Docker Compose, por exemplo, pelo nome do container, a gente não consegue nomear o container, faz um Docker Run, esse nomezinho também, quando eu conecto esse container nessa rede, ele é acessível também a outros que estejam conectados nessa rede, então os nomes nos ajudam nesse caso. Mas aí a gente vai ter aqui o gateway do Docker, que ele vai estar aqui depois desse bridge, porque essa imagem aqui já está simbolizando o IP da máquina, né? Mas imagina que aqui depois da bridge, nós vamos ter o Docker gateway, que normalmente o IP é 172.17.0.1. Pode mudar, esse negócio pode ser tudo diferente dependendo da sua máquina, mas normalmente é isso, tá? Então essa bridge é o comum, a gente habilita ali tem a uma rede interna, então o que é interessante é que se eu não faço nenhuma configuração pra expor esses containers, é uma rede que somente eles tem acesso, somente eles se conversam ali. Eles estão isolados da rede da minha máquina, mas se comunicam ali com a minha máquina, acessando a internet, através do gateway. Temos também uma outra rede, que é a host. Ao invés dos containers receberem o IP, eles estarem em uma rede interna, eles vão compartilhar a rede do seu adaptador de rede da sua máquina. Essa opção aqui é muito performática. Grave isso. Por quê? Uma vez que eu não tenho um bridge criando uma rede interna, vai ser bem interessante, porque, por exemplo, se eu estiver rodando o Nginx na porta 80, como ele está compartilhando a rede da máquina, ele está na rede da máquina. Então, se eu rodar um outro Nginx na porta 80, ele vai dar zica, porque aí eu não tenho mais esse isolamento. Ele está compartilhando a interface da máquina ali, então faz com que a comunicação seja mais performática. Porque toda vez que a comunicação tem que ser feita, tem que passar aqui pela bridge, ele tem que fazer o encaminhamento, como está usando o padrão mesmo, a interface física aí da sua máquina. Então, não tem que fazer conversões e outras coisas para tentar fazer esse encaminhamento e chegar lá em quem a gente quer se comunicar. Existe também a rede overlay, que é uma rede distribuída. Na nossa máquina, nós estamos utilizando o Docker Daemon, que é o servidor que provê para a gente todos os serviços, os volumes, as redes, os containers, as imagens e tudo mais, mas eu posso ter vários servidores em máquinas diferentes e rodando containers. Então, imagine, eu estou em máquinas diferentes rodando containers diferentes, então eu consigo criar uma rede em que, em máquinas distribuídas, esses containers consigam se comunicar. Então, é mais indicado para uma situação como um Docker Swarm, que é a ferramenta própria para a gente poder trabalhar com clusters e orquestrações de container. Existem outros tipos de rede, como o IP VLAN, o MAC VLAN e o NON, que não são muito famosos. Se você quiser dar uma olhadinha e conhecer um pouco mais sobre eles, eu coloquei aqui o link sobre os drivers de networking. Então, é isso, pessoal. A gente vai se concentrar aqui nesse capítulo, principalmente no bridge, que é o padrão, e no host. Sabendo esses dois aqui já é o padrão, e no host. Sabendo esses dois aqui já é o suficiente para você poder ter um conhecimento bacana com as redes do Docker. Então, vamos continuar nossa saga. É isso aí e até a próxima.