A palestra aborda a utilização do docker juntamente com o docker-compose, que se mostra uma excelente ferramenta na criação de ambientes complexos de desenvolvimento e deploy, utilizando toda a hegemonia do docker para prover ambientes de forma fácil e eficiente. Aborda os conceitos básicos, como utilizar no dia a dia de forma efetica, trabalhando os conceitos de Dockerfile, imagens, conteineres, Dockerhub e seus principais comandos.docker: https://docs.docker.com/docker-compose
14. Imagens
● Template read only;
● Contém os arquivos que vão executar a aplicação.
Normalmente bibliotecas, frameworks, arquivos do SO;
● Há imagens de SO: Ubuntu, Debian, CentOS, etc;
● Há imagens de ambientes: Python, Ruby, Python, etc;
● Imagens podem ser raiz ou apontar para um ‘pai’;
● Podem ser criadas por um Dockerfile ou por um
commit;
● Formato: usuário/nomedaimagem, e imagens oficiais
não tem nome do usuário.
15. Contêineres
● São iniciados a partir de imagens e rodam sua aplicação (docker
run);
● Podem ser commitados para gerar imagens (docker commit);
● Se comunicam via rede e o ambiente externo e/ou com outros
contêineres;
● Tem sua execução controlada pelo host (CPU, memória, etc);
● Podem parar (docker stop), reiniciar (docker restart, docker start),
ser apagado (docker rm), pausar (docker pause) e continuar
(docker unpause);
● Tem nome;
● Podem ser descartados ou persistentes;
● Normalmente rodam somente um processo.
17. Por que é importante para
desenvolvedores?
● Fácil de começar a desenvolver;
● Você pode usar Window, Linux ou Mac
● Se funciona na sua máquina:
○ vai funcionar na máquina de todos;
○ vai passar no build e vai funcionar em produção;
● Fácil de montar o ambiente;
● Fácil de estruturar a arquitetura;
● Sem conflito entre diferentes projetos;
● Rápido, Muito, muito, muito rápido.
18. Por que é importante para sysadmins?
Fácil de colocar em produção;
É trivial montar ambientes padronizados para dev, qa e
produção;
Se passou na build vai funcionar em produção;
É fácil escalar;
É fácil dar prioridade para uma aplicação sobre outra;
Permite aumentar a densidade de uma máquina.
19. Open source
● Disponível em github.com/docker;
● Apache2 (permissiva, você detem uma licença para
fazer oque quiser);
● Escrito em Go;
● Monetização atravéz de serviços adicionais opcionais
e que você pode contruir por conta própria se quiser;
● 900+ contribuidores;
● Diversos projetos adicionais (composer, libcontainer,
etc).
20. Instalando
● No linux a instalação é feita apenas com uma
única linha que você roda no terminal;
● Por causa das dependências com o kernel do
linux, Docker não roda diretamente no windows
ou no Mac;
● No Windows ou no Mac rode com Boot2Docker,
que deixa tudo rápido, ou rode diretamente em
uma VM.
22. Dockerfile
● É o “fonte” de uma imagem;
● É uma maneira de gerar imagens, e é a melhor
maneira;
● Fácil de saber o que há em uma imagem: leia o
Dockerfile;
● Você indica a imagem pai, arquivos para adicionar,
comandos para rodar ao criar a imagem, o comando
que vai rodar a imagem em si, etc;
● Compilado com ‘docker build’;
● .dockerignore.
23. Um Dockerfile
FROM ubuntu:14.04
MAINTAINER Hudson Brendon <contato.hudsonbrendon@gmal.com>
# pip requirements
ADD /requirements/requirements.txt /home/requirements/requirements.txt
# update e upgrade
RUN apt-get -yq update && apt-get -yq upgrade
# enstall pre-requisites
RUN apt-get -yq install build-essential python-pip python-dev git vim
# pip install packages
RUN pip install -r /home/requirements/requirements.txt
# expose the port
EXPOSE 8000
CMD ["/bin/bash"]