ambientes. ▹ Te permite criar ambientes complexos inteiros, suprir de dependências, padronizar máquinas e escalar de maneira rápida. ▹ Facilita a orquestração de máquinas e simular um ambiente distribuído. ▹ Queijo está para goiabada assim como Docker está para Cloud. 5
Facilidade de criação de Clusters e Servidores ▹ Resolução de dependências. ▹ Build performático ▹ MUITO rápido ▹ Escalável, elástico e “clusterizável” ▹ Feito para Cloud e API’s ▹ Não depende de hardware ou sistema ▹ Replicação quase trivial da produção para a máquina do Dev 10
de configuração que vão modelar o Container Linux a sua necessidade. ▹ Uma Dockerfile segue um padrão de marcação que o Docker nativo vai seguir para executar o Build dos containers. 27
para dentro do container ▹ COPY - Copia qualquer arquivo para dentro do container ▹ RUN - Executa qualquer comando a uma camada e commita no container. ▹ CMD - Executa um comando quando o container é iniciado ▹ ENTRYPOINT - Permite rodar um comando na inicialização com Ciclo de vida. ▹ LABEL - Permite adicionar Metadados ao container. ▹ ENV - Cria variáveis de ambiente dentro do Container. ▹ EXPOSE - Informa quais portas o container irá ouvir. ▹ USER - Informa qual usuário irá executar as tarefas do container. Default: root. ▹ VOLUME - Faz a criação dos pontos de montagem do container. ▹ WORKDIR - Muda o diretório / para o diretório especificado. 32
No mundo real, nosso sistema depende de outras coisas… ▹ Quando você precisa subir suas dependências. ▹ Seu apache, que depende do seu PHP-FPM, que depende do seu MySQL e do seu Memcache, que mapeia volumes, que necessita de configurações específicas, ▹ e tudo isso, precisa ser startado em ordem pra funcionar 35
MUITA coisa pra digitar ▹ Voltamos ao Dependency Hell, porém com containers, de fato não resolvemos o problema. ▹ Muita coisa pra digitar === muita chance de errar. ▹ NÃO, absolutamente você NÃO será inteligente de isolar isso num arquivo SH. (Espertinho, não seja V1D4 L0K4). 37
ao sucesso na comunidade foi adquirido e integrado ao Docker como Docker-Compose. ▹ Te permite baixar e buildar images, mapear volumes, propriedades, variáveis de ambiente de TODO o seu sistema a partir de um único arquivo ‘maestro’. ▹ Feito para aplicações multi-containers ▹ Você pode referenciar seus serviços, Dockerfiles, arquivos de configuração e como eles vão se comportar durante o build. ▹ Resolução de ordem de dependência ▹ Facilita escalar. Sério. ▹ Torna o chato, legal de novo :)
Para buildar sem cache, usamos --no-cache UP Sobe o conteúdo do arquivo docker-compose.yml STOP Para todos os containers filhos do docker-compose.yml do projeto SCALE Escala a aplicação selecionada scale api=3 RM & KILL Remove os containers parados do projeto. Use o -f para force. Mata todos os containers do projeto LOGS Mostra os logs do projeto atual. Toda a saída padrão de execução. 41
Minimalista que serve pra trabalhos braçais e rápidos, como Cache, containers services que sobem, executam algo e morrem (ex: dump, restore, compose e etc). ▹ Modularização de ambiente Dev & Test e Prod via compose. Referenciamos um docker-compose alternativo com o -f Ex: docker-compose -f docker-compose-dev.yml ou -f docker-compose-prod.yml
um Cron, um ‘npm install’, um ‘composer update’, um restore do banco de dados, um Webhook, uma chamada Curl e etc. ▹ Usar o HaProxy para construir um Load Balance entre containers. ▹ Ambientes Containerizados funcionam muito bem para comportar e escalar API’s REST. ▹ Sempre limpe seus containers após um yum ou apt (Ex: apt-get autoremove; apt-get clean; apt-get autoclean)
▹ Instrodução ao Docker Swarm ▹ Construir e Escalar uma API REST ▹ Montar um ambiente completo de Teste, CI & CD, Build e Deploy com integrações do Docker como Jenkins e GIT