4. O que é docker ? História
Docker é um projeto open source (Apache License 2.0) para
empacotar, enviar e executar diversas aplicações em
containers.
Containers docker são estruturas de hardware e plataforma
que podem ser executadas em diversos ambientes, desde o
notebook até ambientes em nuvem - não requer que se
utilize uma linguagem, framework ou sistema de pacotes
específico. Isto os torna uma ferramenta para deploy e
escalabilidade de aplicativos web, bancos de dados e
serviços de backend sem depender de um provedor em
particular.
5. O que é docker ? História
O primeiro anúncio do Docker foi feito em 15 de Março de
2013 em um lighting talk por Solomon Hykes, CEO da
dorCloud em uma coferência de Phyton, sendo liberado,
como uma engine para deploy.
E em abril de 2015 a empresa já vale 1 bilhão de dólares.
Em outubro de 2015 já existem vários projetos: Docker
Compose, Docker Swarm, Docker Hub Enterprise, Docker
Machine, Docker engine, Docker Hub, Docker Registry,
Kitematic.
6. E antes ? História
Virtualização como um todo
● Mainframes (1970 -)
● Linux (1995 -)
● VMWare (~ 1999)
● User Mode Linux (2003 -)
● Provedores de VPS
● LXC
● Xen (2004 -)
● Amazon EC2 (2006 -)
● Software-Defined Networking (2008 -)
● OpenStack (2010 -)
● Dotcloud / Docker (2012 - )
7. O que são containers?
Quando o kernel do sistema operacional é capaz
de permitir múltiplas instâncias isoladas em
user-space, ao invés de somente uma, cada
instância pode ser chamada de container ou
software container).
Por compartilharem o mesmo kernel e parte dos
recursos, containers consomem muito menos
recursos do que uma máquina virtual.
10. Tecnologia de virtualização do
Docker
Funcionamento
Quando o kernel do sistema operacional é capaz de permitir
múltiplas instâncias isoladas em user-space, ao invés de somente
uma, cada instância pode ser chamada de container ou software
container).
Por compartilharem o mesmo kernel e parte dos recursos,
containers consomem muito menos recursos do que uma máquina
virtual.
12. Por que utilizar ? ? ?
* Rápida aprendizagem/utilização se comparado com outras
tecnologias de containers (LXC, cgroups, etc)
* Comunidade muito ativa
* Repositório publico de imagens, com compartilhamento e
colaboração
* Integração com ferramentas de DevOps (Zabbix, Puppet, Chef,
Vagrant, Ansible)
* Excelente desempenho e economia de recursos (espaço em
disco, processamento, memória)
* Versionamento de imagens e cache
15. * Juntamente com a cultura de DevOps, permite que você possa mais facilmente
utilizar ferramentas top de linha (linguagens, bibliotecas, etc) pois o ambiente já
está pronto para ser provisionado e, querendo ou não, algum nível de
documentação já foi gerado
* Precisa de outro sistema operacional ou distribuições além do GNU/Linux
* Personalização da imagem que será construída (ex.: Debian)
* Aumento da curva de aprendizagem (imagens personalizadas, logs, cron, rede)
E por que devo entrar nessa caxinha ?
16. * Constante evolução (ex.: rede)
* Agiliza a entrega de software
* Aumenta a agilidade de correção. É muito mais fácil e preciso reenviar um
container completo (que já passou cliclo docker) do que enviar um patch em um
arquitetura monolítica.
* Para implementá-lo é necessário que as várias áreas da empresa contribuam, o
que gera DevOps na prática.
E por que devo entrar nessa caxinha ?
18. E como utilizar ?
* docker create cria um container mas não o inicia
* docker run cria e inicia um container em apenas uma operação
* docker stop para um container
* docker start inicia um container já criado
* docker restart reinicia um container
* docker rm deleta um container
* docker kill envia um SIGKILL para o container
* docker attach irá conectar a um container em execução
* docker wait aguarda até que o container pare
19. E como utilizar ?
* docker ps exibe os containers em execução (-a para todos)
* docker logs obtém logs a patir do container (saída)
* docker inspect visualiza todas as informações de um container
(notavelmente o endereço IP)
* docker events exibe os eventos a partir do daemon em tempo real
* docker port exibe mapeamento de portas (NAT)
* docker top exibe os processos em execução no container
* docker stats exibe estatísticas da utilização de recursos no container
* docker diff exibe arquivos alterados no sistema de arquivos do
container
20. E vamos utilizando . . .
* docker cp copia arquivos ou diretórios entre o container e o sistema de
arquivos local
* docker export -o arquivo.tar nome_container exporta o sistema de
arquivos do container para um tarball
* docker exec executa comandos em um container
21. Ufa… mais ???
* docker images exibe todas as imagens
* docker import importa uma imagem de um arquivo tar
* docker build cria uma imagem a partir de um Dockerfile
* docker commit cria uma imagem a patir de um container
* docker rmi remove uma imagem
* docker load carrega uma imagem a partir de um arquivo tar, incluindo
camadas e tags
* docker save salva uma imagem em um arquivo tar com todas as camadas, tags
e versões
* docker history exibe o histórico de uma imagem
* docker tag renomeia a imagem (localmente ou no hub).