Uma visão geral do docker, uma ferramenta de gerenciamento de contêiners para simular o comportamento de aplicações em ambientes totalmente gerenciados.
A apresentação ensina os conceitos básicos e apresente um bloco de anotações com os principais comandos para o dia-a-dia.
3. Agenda
✤ O que é docker?
✤ O que são contêineres?
✤ Qual a diferença entre máquina física, máquina virtual e
contêineres?
✤ Primeiros passos
✤ Vamos fazer um bolo?
✤ Don’t repeat yourself! (again)
4. O que é docker?
✤ É a plataforma de contêineres de software mais conhecida no
mundo
✤ Ele permite que os desenvolvedores trabalhem com contêineres
isolados de forma a evitar o problema de “problemas com minha
máquina”
✤ Permite que ambientes complexos sejam levantados e
interligados de forma rápida e dinâmica
✤ Por ser de fácil manutenção, permite uma escalabilidade mais
rápida e flexível
5. O que são contêineres
✤ São todos os componentes requeridos para a execução de qualquer
trecho de software
✤ Esses componentes ficam isolados e contidos em contêineres, sendo
assim, não são afetados pela execução do código, podendo ser
reutilizado a qualquer momento
✤ Como os contêineres ficam isolados, eles podem ser combinados e
mantidos em versões distintas
✤ Ao contrário das máquinas virtuais, os contêineres não ocupam todo o
espaço, memória, cpu. Ao invés disso, compartilham com a máquina
que está executando o docker
6. Qual a diferença entre máquina física, máquina virtual e
contêineres?
Máquina física
Arquitetura x86
Sistema Operacional
Aplicação
7. Qual a diferença entre máquina física, máquina virtual e
contêineres?
Máquina virtual
Arquitetura x86
Sistema Operacional/servidor de máquinas virtuais
Máquina Virtual
Sistema Operacional
Aplicação
Máquina Virtual
Sistema Operacional
Aplicação
Máquina Virtual
Sistema Operacional
Aplicação
8. Qual a diferença entre máquina física, máquina virtual e
contêineres?
Contêineres
Arquitetura x86
Sistema Operacional
Docker Engine
Aplicação
conteiner 1
conteiner 2
Aplicação 2
conteiner 1
9. Primeiros passos
✤ docker run [opções] <imagem> [comando]
✤ -v “pasta_no_host:pasta_no_docker” (define/compartilha volumes)
✤ -p “porta_no_host:porta_no_docker” (define/compartilha portas)
✤ -t (virtualiza a sessão)
✤ -i (interativo)
✤ -e (associa uma variável de ambiente)
✤ docker ps [opções]
✤ -a (exibir todos os processos)
✤ -q (exibir somente o hash do processo)
✤ docker images [opções]
✤ docker exec [opções] <instância> <comando>
✤ docker pull image
✤ docker rm
✤ docker rmi
10. docker ps -qa | xargs docker rm -f
remove todos os processos
12. Vamos fazer um bolo?
✤ Criando o Dockerfile
FROM ubuntu
RUN apt-get update && apt-get install -y curl
ENTRYPOINT curl
✤ Apenas um Dockerfile por pasta
docker build -t [tag da imagem] <pasta>
13. Vamos fazer um bolo?
✤ FROM - imagem na qual esta imagem se baseia
✤ RUN - executa um determinado comando
✤ COPY - copia arquivos para dentro da imagem
✤ ENTRYPOINT - comando que será precedido ao comando CMD ou
ao comando passado no comando run do docker
✤ EXPOSE - portas que serão expostas pela imagem
✤ CMD - comando principal que será executado se nada for passado
no comando run
14. Don’t repeat yourself! (again)
✤ O docker guarda cada comando RUN como uma imagem
que pode ser reaproveitada
✤ Aproveite o cache do docker
✤ Reutilize imagens, utilizando FROM
✤ aproveite o http://hub.docker.com
✤ envie suas imagens para um repositório - por exemplo o
próprio http://hub.docker.com ou o AWS ECS
15. “Não me interessa se roda na sua máquina! Nós não estamos
entregando a sua máquina!”
–Vidiu Platon