docker-compose up

how to build your environment

Icaro Caldeira Carreira / @icarcal

Icaro Caldeira Carreira

Ferramentas

Docker

Definição

Docker é uma plataforma para desenvolvedores e sysadmins construir, rodar e "entregar", aplicações, seja em laptops, VMs em datacenters ou na nuvem.

Como?

Nós precisamos saber de alguns conceitos antes de começar com o docker:

  • IPs e portas
  • Máquinas virtuais
  • Edição de arquivos de configuração
  • Familiaridade com idéias de dependências e processos de build de códigos
  • Recursos de máquina como porcentagem de CPU, uso de RAM, etc.

Imagens

Uma imagem de docker é um pacote de software leve, standalone Aque inclui tudo o que você precisa para rodar a sua aplicação: código, runtime, sistema operacional e todas as configurações necessárias.

Containers

Uma imagem se torna um container quando é feito o docker run na engine do próprio docker.

Disponível para Linux, Windows e MacOS, os containers sempre rodarão da mesma forma, indepente da infraestrutura.

Containers isolam o software do ambiente e garantem que ele funcione de maneira uniforme apesar das diferenças entre os ambientes.

Características dos containers

Padrão: O Docker criou um padrao de containers para que eles possam ser "portados" para qualquer ambiente

Leve: Os containers compartilham o kernel do sistema operacional então não requer um sistema operacional por aplicação, reduzindo custos de servidor e licença.

Seguro: Aplicações são seguras em containers e o Docker possui o uma a mais alta camada de isolamento da industria

Docker vs VMs

Volumes

Volumes são mecanismos perferidos para persistir dados gerados e utilizados pelos containers.

Volumes funcionam em Linux, Windows e MacOS.

Os drivers de volume permitem que você guarde os seus volumes em hosts remotos ou provedores de cloud, para criptografia dos conteúdos ou para adicionar outras funcionalidades.

Complementando os outros dois itens, volumes são geralmente a melhor escolha para persistir dados dos containers, porque um volume não aumenta o tamanho do container utilizando o volume, e o conteúdo do volume existe fora do ciclo de vida do container.

Kitematic

Definição

Crie containers por uma simples, porém poderosa, interface gráfica

Como

Agora é parte do Docker Toolbox (windows, mac)

Para linux, precisa ser baixado direto pela releade do github

Demos

Dockerfile

Definition

É um documento de texto que contém todos os comandos que o usuário deve executar para a criar a imagem

Como

  1. Criar um arquivo chamado Dockerfile
  2. Definir todos os comandos necessários para criar sua imagem
  3. Execute seu comando

Demo

docker-compose

Definição

Compose é uma ferramenta para definir e rodar aplicações Docker multi-containers.

Como

  1. Defina o ambiente do seu app com um Dockerfile para que ele possa ser reproduzido em qualquer lugar
  2. Defina os serviços que geram o seu app em um arquivo docker-compose.yml para que eles rodem juntos e em um ambiente isolado
  3. Rode o comando docker-compose up e o Compose inicia e roda toda a sua aplicação

Demo

Orquestração de containers

Referências

https://www.docker.com/

https://docs.docker.com/engine/reference/builder/

https://docs.docker.com/compose/

https://www.quora.com/What-are-Docker-Images

https://blog.docker.com/2018/08/containers-replacing-virtual-machines/

Questões?

@icarcal

Obrigado