DevConf - Docker para Desenvolvedores @Romulo Scampini
Primeiro Evento organizado pelo Opensanca se trata do DevConf, tivemos a participação do Romulo Scampini (www.scampini.com.br) abordando sobre Docker para Desenvolvedores.
DESENVOLVEDORES QUESTÕES RESPONDIDAS ▸ Porque todos os devs deveriam utilizar Docker? ▸ O que é Docker? ▸ Qual a diferença entre Containers (Docker) e Máquinas virtuais (VMs)?
DESENVOLVEDORES HISTÓRIA ▸ Apresentado na PYCON US em 2013 ▸ Criado por Solomon Hykes, Andrea Luzzardi e Francois- Xavier Bourlet na dotCloud, além de Jeff Lindsay com colaboração independente. ▸ Evoluiu dos Linux Containers ▸ Escrito em Go lang
DESENVOLVEDORES VANTAGENS ▸ Ambiente mais próximo com o de produção ▸ Facilidade de ter diversos ambientes na máquina ▸ Facilidade de uso ▸ Ideal para arquitetura de microserviços ▸ Portabilidade ▸ Velocidade
DESENVOLVEDORES DESVANTAGENS ▸ Dificulta troubleshooting ▸ Como todos os containers compartilham o kernel do host, um bug no kernel pode afetar todos os containers ▸ Gerenciamento em grandes ambientes necessita de alguma ferramenta (Swarm, Kubernetes, etc) ▸ Limite da Imagem até 10GB
DEMONSTRAÇÃO 1 ▸ Subindo um banco de dados Postgres # docker run -d --name db1 -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_DB=postgres -e POSTGRES_PASSWORD=postgres postgres:9.4 ▸ Subindo um banco de dados MySQL # docker run -d --name db2 -p 3306:3306 -e MYSQL_DATABASE=db_app -e MYSQL_ROOT_PASSWORD=app123 mysql:5.7 ▸ Subindo um servidor MongoDB # docker run -d --name db3 -p 27017 mongo ▸ Subindo um servidor PHP # docker run -d --name web -p 80:80 php:7.0-apache DOCKER PARA DESENVOLVEDORES
CRIAR IMAGEM DA SUA APLICAÇÃO ▸ Definir se irá utilizar uma imagem oficial (se houver) ou se irá construir ▸ Criar um Dockerfile ▸ Estrutura básica Dockerfile: - Imagem Base - FROM - Definir diretório - WORKDIR - Instalar e configurar bibliotecas e dependências - RUN / ADD - Copiar aplicação para imagem - ADD - Expor uma porta - EXPOSE - Definir o comando para subir a aplicação - ENTRYPOINT / CMD ▸ Criar um script sh ou integrar sua aplicação a algum recurso para criar a imagem ▸ Opcional: Criar um arquivo .dockerignore DOCKER PARA DESENVOLVEDORES
Engine / daemon: API que gerencia as imagens e containers através ▸ Client: Consome a API enviando comandos para criar, executar, parar e ▸ demais ações sobre imagens e containers. Pode ser via linha de comando, ▸ aplicações web, ou até aplicações GUI ▸ Registry: Repositório de imagens ▸ Compose: Ferramenta para orquestração de containers ▸ Machine: Ferramenta para gerencia de Docker hosts ▸ Swarm: Ferramenta para orquestração de hosts Docker DOCKER PARA DESENVOLVEDORES