
Entender a diferença entre containers e máquinas virtuais é a chave para compreender as vantagens de usar o Docker.
Para os alunos que ainda não estão no mercado, esta aula vai demonstrar diferentes usos do Docker, desde o desenvolvedor, até o deploy.
Chroot, namespaces e cgroups são funcionalidades chave para criação de containers, então vamos explorar um pouco sobre os mesmos.
Princípio 11 dos 12 factors, enviar os logs sempre para o stdout.
O GNS3 é uma ferramenta bastante utilizada para simular ambientes de rede, assim como o EVE-NG. Vamos utilizar ele para simular um Switch L2 com uma VLAN e entender a comunicação com o modo de rede de macvlan por baixo dos panos.
Vamos reusar a Ansible role para automatizar a instalação do Docker (YES!) e importar a VM dentro do GNS3 para iniciarmos a configuração.
Colinha do comando para criação da rede:
$ docker network create \
-d macvlan \
--subnet 192.168.122.0/24 \
--gateway 192.168.122.1 \
--ip-range 192.168.122.15/32 \
-o parent=eth0.100 mavlan100
Lembrando que cada container dentro dessa rede NÃO pegará o IP do DHCP da rede, mas sim do Docker, por isso é importante garantir que você tenha IPs reservados para esse modo de rede.
A ordem dos comandos importa dentro de um Dockerfile, principalmente porque você pode invalidar o cache se errar na ordem.
Em anexo há os arquivos completos de todas as aulas desse módulo.
Princípio 3 dos 12 factors... Poder configurar a sua aplicação apenas usando variáveis ambiente.
Mais um exemplo para freezarmos bem o conteúdo e a importância de se utilizar health checks.
Deixa eu te fazer algumas perguntas...
Tem dúvidas de como as empresas utilizam o Docker para gerar valor?
Quer começar a se especializar no mundo de containers?
Deseja aumentar a sua produtividade desenvolvendo software, utilizando o Docker para subir seu ambiente de testes localmente?
Essas são algumas das dúvidas que eu abordo ao longo do treinamento Docker: Do Básico ao Avançado. Este curso é 100% focado em Docker, desde como um container é criado por baixo dos panos utilizando recursos do kernel Linux, até o deploy de aplicações distribuídas em um cluster Docker Swarm.
Este treinamento foi projetado de forma cuidadosa, seguindo a lógica de complexidade dos assuntos relacionados ao Docker:
Introdução ao Docker: Neste módulo vamos entender diferenças de containers e VMs, por que utilizar, como as empresas usam para gerar valor, além de outros assuntos mais técnicos como a arquitetura e entender um container por trás dos panos.
Primeiros passos: Instalação do Docker, difereças de imagem e container, DockerHub.
Imagens, containers e OverlayFS: Aqui vamos aprender os comandos básicos para gerenciamento de imagens e containers, bem como entender o sistema de arquivos OverlayFS (a parte mais interessante na minha opinião). No momento que você entender como o sistema arquivos, tudo fará sentido sobre as "mágicas" que o Docker te entrega.
Networking: Vamos entender como funciona a comunicação container-to-container, de forma totalmente isolada. Além disso, temos um extra usando o modelo macvlan, simulando no GNS3 com Open vSwitch.
Storage: Containers são efêmeros, isso é, não persistem dados. Precisamos de um recurso para que isso funciona corretamente, e é onde os volumes entram em ação.
Build de imagens: A parte mais importante para o trabalho de um DevOps. Aqui vamos escrever instruções para o Docker construir artefatos imutáveis com o código da aplicação, que pode ser executado em qualquer máquina, em qualquer lugar. Imutabilidade e portabilidade. Tudo isso seguindo boas práticas do Dockerfile.
Multistaging e distribuição de imagens: Subimos mais o nível e vamos entender a técnica de multi-staging para reduzir o tamanho de imagens, além de entender sobre versionamento e distribuição de imagens.
Restart policies e events (+projeto): Nosso primeiro projeto, usando código Python para conectar na API do Docker e extrair informações, enviando alertas para o Discord.
Docker Compose: Essa é a feature mais interessante para desenvolvedores. Aqui vamos descrever a nossa aplicação, de forma que com um único comando, todo o ambiente de desenvolvimento esteja de pé em nossa máquina. E claro, funcione na máquina do coleguinha também.
Docker Swarm: Vamos aprofundar os conhecimentos colocando a aplicação no que seria a "produção", utilizando o modo Swarm, onde containers são distribuídos em diferentes hosts visando alta disponibilidade. Aqui temos 2 projetos práticos focados apenas nisso.
Security: Não menos importante, segurança! Vamos entender sobre permissionamento de containers, assinatura de imagens, encriptação da Docker CLI para um Docker Host remoto via TLS ou SSH.
Qual dúvida que você tiver relacionado ao material do treinamento, sinta-se à vontade para comentar nas aulas e eu vou responder assim que possível.
E aí, pronto para começar essa jornada?