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

Introdução ao Docker

Introdução ao Docker

Docker mudou como criamos sistemas. Motivos para sua adoção são vários, mas segue alguns bons exemplos:

Aplicação auto contida
Ambientes iguais
Padronização com melhores práticas
Comunidade
Com poucos comandos podemos ter nossa aplicação online na maioria das grandes cloud providers, como: AWS, Google Cloud, Digital Ocean, OpenStack entre outros. Como temos uma aplicação auto contida, seu deploy fica simplificado.

Durante a palestra, vamos utilizar os comandos básicos de gerenciamento de Docke

Avatar for Rafael Dutra

Rafael Dutra

April 29, 2017
Tweet

More Decks by Rafael Dutra

Other Decks in Programming

Transcript

  1. Docker - Breve história • Release inicial em 13/3/2013 •

    Iniciado como projeto interno • Criado por Solomon Hykes • Escrito em Go (Google) • Open Source - http://docker.com
  2. Docker - O que é? • Tecnologia de código aberto

    • Crie, execute, teste e implante aplicações. • Empacote software em uma unidade padronizada para o desenvolvimento. • Utilizou LXC inicialmente, migrado para runC (libcontainer). • AUFS como filesystem (Another Union File System) • Container não é VM!
  3. Docker - Comunidade Github - Open Source • 180k linhas

    de código • 31k commits • 185 releases • 1.6k contribuidores
  4. Docker - Alguns dados - Docker Con 2016 • 460K

    aplicações em Docker, um crescimento de 3100% em 2 anos. • 4 bilhões de imagens baixadas. • 530% em contribuição com o código.
  5. Docker - Alguns dados - Datadog - Abril/2017 • 10%

    dos hosts utilizam Docker. • 30% de aumento em adoção em 1 ano. • 5x o aumento em deploys em 10 meses entre usuários. https://www.datadoghq.com/docker-adoption
  6. Docker - Alguns dados - New Relic 2016 • 192%

    de aumento em containers por empresa. • Tempo de vida de container caiu de 13 horas para 9.5 horas. ◦ Aumento de deploys. • Frameworks em PHP, Ruby e Node são as principais tecnologias.
  7. Docker - Por que utilizar? • Evitamos a frase -

    “mas funciona na minha máquina”. • Aplicação toda contida em uma imagem. • Infraestrutura definida como código. • Comunidade.
  8. Docker - Terminologia • Images - É a “planta” de

    nossa aplicação, que forma a base para os containers. • Containers - Implementação dinâmica de uma imagem. Múltiplos containers podem vir de uma única imagem. • Docker Daemon - Serviço em background que roda no host e que gerencia a construção, execução e distribuição.
  9. Docker - Terminologia • Docker Client - Linha de comando

    que permite que o usuário interaja com o daemon. • Docker Hub - O registry (repositório) para Docker Images.
  10. Docker - Como instalar ? CE - Community Edition 1.

    sudo apt-get -y install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common 2. curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - 3. sudo apt-get update 4. apt-get -y install docker-ce
  11. Docker - Como iniciar, qual o primeiro comando? • Que

    tal iniciar pelo começo? ◦ docker version ◦ docker info
  12. Docker - Evoluindo... • Como listar containers? docker container list

    • Como parar? docker stop • Como reiniciar? docker restart • Como remover? docker rm
  13. Docker - Entrando num container “Quero criar minha própria imagem,

    pois nenhuma imagem que procurei atendeu meus requisitos.” Podemos usar o comando docker attach para trabalhar no container.
  14. Docker - Okay, tudo pronto, e agora? Agora temos que

    “empacotar” o seu container em uma imagem. Usamos então o comando docker commit para gerar a imagem.
  15. Docker - Terminologia Dockerfile é: • Simples arquivo texto onde

    contém uma lista de comandos. • É uma forma simples de automatizar a criação de imagens. • Basicamente são comandos em Linux, então não é necessário aprender uma nova sintaxe.
  16. Docker - Nginx # imagem base FROM nginx # copiando

    arquivo para um diretório específico COPY index.html /usr/share/nginx/html # qual porta queremos que seja publicada EXPOSE 8000 # rodando aplicação CMD ["nginx", "-g", "daemon off;"]
  17. Docker - PHP CLI # imagem base FROM php:7.1-cli #

    comando que irá rodar ao iniciar o container CMD ["php", "--version"]
  18. Docker - Volumes Queremos programar localmente, ou temos dados para

    enviar para dentro do container. docker run -it -v /path/to/file:/file tchelinux-app command /file