O documento introduz Docker, explicando como ele pode isolar aplicações em containers e simplificar o desenvolvimento e deploy. Ele define Docker, imagens, containers e Dockerfile, mostrando como criar uma imagem passo a passo com Dockerfile e como orquestrar múltiplos containers com Docker Compose.
2. Quem sou eu
• Marcio Trindade (@marciotrindade);
• Formado em Ed. Física;
• Trabalho com desenvolvimento desde 2004;
• Blog: marciotrindade.com;
• Trabalho com Ruby desde 2008;
5. Agora está assim
WebService
nginx + ssl + assets
Banco de Dados
postgresql + pgv8 + v8
Fila
Redis
Workers
Ruby + sidekiq
Web app
Ruby + rails
API
Golang
Cache
Memcached
6. Por que Container
• Conseguir isolar cada parte da sua aplicação;
• Tudo o que cada parte precisa está lá;
• Ter o ambiente mais próximo ao de produção;
• Simplificar o desenvolvimento;
• Simplificar o deploy;
10. Client and server
• Já vem com um client (cli);
• Conversa com o servidor ou daemon;
• Possui uma api RESTfull completa;
• Pode estar ou não na mesma maquina;
11. Docker images
• Forma do docker construir containers;
• É a criação do ambiente a partir do file system com
instruções do tipo:
Add a file
Run a comand
• Podemos considerar imagens como o código fonte
dos containers.
12. Registries
• Um repositório de imagens;
• Pode ser público ou privado;
• Docker Hub (público);
• Possui milhares de imagens prontas;
13. Containers
• Criado a partir de uma imagem;
• Contém a sua app ou serviço;
• É a camada de execução;
• Pode rodar um ou mais processos;
16. Dockerfile
• FROM - A imagem pra utilizar
FROM ubuntu:14.04
• RUN - Executar comandos necessários pra preparar o sistema
RUN apt-get install -y package-foo && apt-get install -y package-bar
• CMD - Comando que seu container deve rodar
CMD ["rake", "db:migrate"]
• EXPOSE - Expor a porta que o serviço vai escutar
EXPOSE 80
• ENV - Criar variaveis de ambiente
ENV RAILS_ENV production
• COPY or ADD - Copiar um conteúdo pra dentro do container
COPY Gemfile /myapp/Gemfile
• VOLUME - Expor uma area de de arquivos mutaveis
VOLUME . /my_app
• WORKDIR - Qual o path de trabalho da sua aplicação
WORKDIR /my_app
18. Docker Compose
• Antigo "fig";
• Cria e gerencia containers docker;
• Define multi-containers em um único arquivo;
• Cria link entre os containers;
• Sobe suas aplicações com um único comando;