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

Docker + Python = Sucesso

Docker + Python = Sucesso

Palestra apresentada no Grupy-SP em 19/11/2016

Erick Müller

November 19, 2016
Tweet

More Decks by Erick Müller

Other Decks in Programming

Transcript

  1. Quem sou eu? > hoje em dia: > programador [python

    | go | php] > devops > já fiz: arquitetura, coordenação de time, gerência de projeto, gerência de suporte, gerência de infra > gosto de dividir experiências > linux + fedora
  2. O que é o Docker? é aquele baguio muito loco

    (isso, um container de aplicação; algo que “envolve” sua aplicação num ambiente isolado com acesso direto/delegado a chamadas do kernel)
  3. O que é o Docker? é aquele baguio muito loco

    que é tipo uma VM? Não. Ele não é “tipo uma VM”. O Docker não pretende ser uma VM, apesar de parecer com uma.
  4. Isto é uma VM - hypervisor - SO completo -

    isolamento total - “um computador dentro de outro” https://www.docker.com/what-docker
  5. Isto é o Docker - docker engine - “apenas arquivos”

    - dependência do kernel host - processo na máquina host https://www.docker.com/what-docker
  6. Então, o Docker garante... - o isolamento da aplicação em

    relação ao resto da estrutura do Sistema Operacional; - a imutabilidade da aplicação conteinerizadas - images! - a independência da aplicação em relação à configuração do sistema operacional Host.
  7. aplicacao.py versão do python específica (docker base image) configurações do

    ambiente (docker build) aplicacao.py IMAGEM DOCKER!
  8. Dois modos de operação Interativo (interactive) Roda o comando e,

    ao final deste, desliga a instância Desconectado (detached) Roda o comando e fica esperando um sinal para ser desligado (falha na execução do comando de entrada OU desligamento explícito)
  9. Principais comandos docker run docker pull docker build docker ps

    docker rm docker rmi docker stop inicia um container a partir de uma imagem obtém uma imagem a partir de um repositório cria uma imagem a partir de um Dockerfile lista os containers (por padrão, só os “em execução”) remove um container remove uma imagem para a execução da instância
  10. Exemplo - rodando uma linha de comando isolada $ docker

    pull python:3.5 $ docker run -it --name exemplo_001 python:3.5 $ docker ps $ docker ps -a $ docker rm exemplo_001 $ docker run -it --rm python:3.5
  11. Exemplo - rodando uma aplicação desconectada $ docker run -d

    --name <nome_maquina> <imagem> $ docker stop <nome_maquina>
  12. Docker Compose arquivo descrevendo as imagens e como elas se

    comunicam para entregar uma aplicação. gerencia o estado de todos os containers ativos no grupo de forma única. ÓTIMO durante o desenvolvimento, para simular um stack completo.
  13. Docker Compose # docker-compose.yml version: '2' services: db: image: postgres

    web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db
  14. 3 motivos que me convenceram a usar Docker cria mais

    condições para testes: como minha aplicações funciona atrás de um proxy reverso, com 3 instâncias rodando? e se eu mudar o banco de dados? e se eu colocar um servidor de sessões? e se uma instância cair? distribuição: a mesma aplicação pode rodar em diversos ambientes. componentização + combinação: aplicações isoladas e especializadas conversando, ao invés de um grande monstro que faz muita coisa.