Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker para desenvolvedores

Docker para desenvolvedores

Docker é uma plataforma aberta para desenvolvedores e administradores de sistemas, para criar, entregar e executar aplicativos distribuídos.
Estes slides foram utilizados em apresentação para a disciplina de tópicos avançados do curso de ADS da Faculdade Senac.
Repositório com os exemplos utilizados nas demonstrações: https://github.com/fernandodebrando/docker-for-dev

Fernando Silva

October 21, 2018
Tweet

More Decks by Fernando Silva

Other Decks in Programming

Transcript

  1. Visão Geral • Problema de padronização de ambientes • Soluções

    • Conteinerização • O que é Docker • Containers / Imagens • Dockerfile • Docker Compose • Docker Swarm • Docker Stack
  2. Soluções - Virtualização Máquinas virtuais (VMs) são uma abstração de

    hardware físico, transformando um servidor em vários servidores. O hypervisor permite que várias VMs sejam executadas em uma única máquina. Cada VM inclui uma cópia completa de um sistema operacional, o aplicativo, binários necessários e bibliotecas - ocupando dezenas de GBs. As VMs também podem ser lentas para inicializar.
  3. Soluções - Conteinerização Os contêineres são uma abstração na camada

    de aplicativo que agrupa código e dependências. Vários contêineres podem ser executados na mesma máquina e compartilhar o kernel do sistema operacional com outros contêineres, cada um sendo executado como processos isolados no espaço do usuário. Os contêineres ocupam menos espaço que as VMs.
  4. Container Vs Virtual Machine Os contêineres e as máquinas virtuais

    têm benefícios semelhantes de isolamento e alocação de recursos, mas funcionam de maneira diferente porque os contêineres virtualizam o sistema operacional em vez do hardware. Os contêineres são mais portáteis e eficientes.
  5. Containers LXC - Linux Containers: • Jul/2008 - Kernel 2.6.26

    + • Compartilha kernel e libs com o host • Isola processo nos Control Groups (CGroups) • Difícil gerenciar
  6. O que é Docker? Docker é uma plataforma Open Source

    que permite criar, executar, testar e implantar aplicações distribuídas dentro de containers.
  7. Docker Engine Docker Engine abstrai as chamadas de SO das

    suas aplicações e utiliza as libraries e binários já existentes
  8. Onde usar Docker? Containers Docker estão em todos os lugares:

    Linux, Windows, Data center, Cloud, Serverless, etc.
  9. Imagens Uma imagem de container do Docker é um pacote

    de software leve, autônomo e executável que inclui tudo o que é necessário para executar uma aplicação: código, ferramentas do sistema, bibliotecas do sistema e configurações.
  10. Containers As imagens de container se tornam containers em tempo

    de execução e, no caso de containers do Docker, as imagens tornam-se containers quando são executadas no Docker Engine.
  11. Dockerfile Dockerfile é um arquivo texto com instruções, comandos e

    passos que você executaria manualmente, basicamente o Docker executa uma receita de bolo.
  12. Dockerfile - Instruções • FROM: Informa a partir de qual

    imagem será gerada a nova imagem; • MAINTAINER: Campo opcional, que informa o nome do mantenedor da nova imagem; • RUN: Realiza a execução de um comando; • CMD: Define um comando a ser executado quando um container baseado nessa imagem for iniciado; • LABEL: Adiciona metadados a uma imagem, informações adicionais que servirão para identificar versão, tipo de licença, host; • EXPOSE: Expõem uma ou mais portas; • ENV: Instrução que cria e atribui um valor para uma variável dentro da imagem; • ADD: Adiciona arquivos locais ou que estejam em uma url, para dentro da imagem. • COPY: Copia arquivos ou diretórios locais para dentro da imagem;
  13. Dockerfile - Instruções • ENTRYPOINT: Informa qual comando será executado

    quando um container for iniciado utilizando esta imagem, diferentemente do CMD, o ENTRYPOINT não é sobrescrito, isso quer dizer que este comando será sempre executado. • VOLUME: Mapeia um diretório do host para ser acessível pelo container; • USER: Define com qual usuário serão executadas as instruções durante a geração da imagem; • WORKDIR: Define qual será o diretório de trabalho (lugar onde serão copiados os arquivos, e criadas novas pastas); • ONBUILD: Define algumas instruções que podem ser realizadas quando alguma determinada ação for executada, é basicamente como uma trigger.
  14. Docker Compose O Docker Compose é uma ferramenta para a

    criação e execução de múltiplos containers de aplicação. Com o Compose, você usa um arquivo do tipo yml para definir como será o ambiente de sua aplicação e usando um único comando você criará e iniciará todos os serviços definidos.
  15. Docker Swarm O Docker Swarm é uma ferramenta nativa do

    Docker que permite a criação de clusters de Docker, ou seja, podemos fazer com que diversos hosts de Docker estejam dentro do mesmo pool de recursos, facilitando assim o deploy de containers.
  16. Docker Stack Uma Stack é um grupo de serviços inter-relacionados

    que compartilham dependências e podem ser orquestrados e escalonados juntos. Uma única stack é capaz de definir e coordenar a funcionalidade de uma aplicação inteira (embora aplicações muito complexas possam querer usar várias stack).