7. Problemas #2
•
Vagrant é legal, mas…
•
Não serve para produção
•
•
•
Alto custo de hardware
Uma vm para cada aplicativo :(
É necessário um SO completo para rodar sua
aplicação?
8. Linux Containers (LXC)
•
Permite rodar um Linux dentro de outro Linux
•
Chroot on steroids
•
Dentro do container, parece uma VM
•
Fora do container, é mais um processo do SO
12. Docker
•
Docker is an open-source project to easily create
lightweight, portable, self-sufficient containers from
any application. The same container that a developer
builds and tests on a laptop can run at scale, in
production, on VMs, bare metal, OpenStack clusters,
public clouds and more.
•
Tem como base o LXC
13. Docker - Filesystem
•
Para rodar um Linux, geralmente precisamos:
•
bootfs - Boot filesystem
•
•
bootloader e kernel
rootfs - Root filesystem
•
restante dos arquivos do sistema
16. Docker - Layers
•
Em um boot tradicional do Linux:
•
•
O kernel monta o rootfs como read-only, checa sua
integridade e faz montagem como read-write
No docker funciona assim:
•
O kernel monta o rootfs como read-only, depois outro
filesystem é montado como read-write em cima do
rootfs
•
Union File System
21. Docker - Instalação
•
Por enquanto, só funciona no Linux
•
Você pode usar em qualquer sistema, via vagrant
•
git clone https://github.com/dotcloud/docker.git
•
cd docker
•
vagrant up
23. Docker + Django
•
Vamos usar algumas ferramentas já utilizadas no
Heroku
•
https://devcenter.heroku.com/articles/getting-startedwith-django
•
dj-database-url
•
dj-static ou o static3 com um middleware wsgi
•
honcho (clone do foreman em python)
25. Docker - Boas práticas
•
Use repositórios privados quando necessário
•
https://docs.docker.io/en/latest/use/
workingwithrepository/#private-repositories
•
Evitar em produção, containers do tipo: nginx + mysql +
memcached + gunicorn
•
Em produção, o container deve rodar apenas o
processo da aplicação
•
configurações via variáveis de ambiente