SlideShare uma empresa Scribd logo
Docker: uma visão geral e
exemplos de uso
Palestrante:
Tobias Sette
12 Conferencia Latino-americana de Software Livreª12 Conferencia Latino-americana de Software Livreª
12 Conferencia Latino-americana de Software Livreª
O que é docker?
Docker é um projeto open source (Apache License 2.0) para
empacotar, enviar e executar diversas aplicações em leves
containers.
Containers docker são independentes de hardware e
plataforma. Tornando possível executá-los em diversos
ambientes, desde o seu notebook até grandes ambientes
em nuvem - e eles não requerem que você utilize uma
linguagem, framework ou sistema de pacotes específico.
Isto os torna uma excelente ferramenta para deploy e
escalabilidade de aplicativos web, bancos de dados e
serviços de backend sem depender de um provedor ou
stack em particular.
https://github.com/docker/docker
12 Conferencia Latino-americana de Software Livreª
A grosso modo, assim como o Pip está para o
Python e o npm para o Node, o Docker está para
ambientes.
Criando apenas as tecnologias que faltavam,
sem reinventar a roda.
12 Conferencia Latino-americana de Software Livreª
O projeto foi liberado, como uma engine para
deploy, em março de 2013 pela startup
dotCloud.
Em abril de 2015 a empresa passou a ter 1
bilhão de dólares em valor de mercado.
Em outubro de 2015 o ecossistema conta com
vários projetos: Docker engine, Docker Registry,
Docker Hub, Docker Hub Enterprise, Docker
Machine, Docker Compose, Kitematic, Docker
Swarm.
https://en.wikipedia.org/wiki/Docker_%28software%29
http://docs.master.dockerproject.org/
http://www.forbes.com/sites/alexkonrad/2015/04/14/docker-raises-95-million-at-billion-valuation/
12 Conferencia Latino-americana de Software Livreª
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.
https://en.wikipedia.org/wiki/Operating-system-level_virtualization
http://doger.io/
12 Conferencia Latino-americana de Software Livreª
VMs vs. Containers
http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/
12 Conferencia Latino-americana de Software Livreª
Tecnologia de virtualização do
Docker
https://en.wikipedia.org/wiki/Docker_%28software%29
https://docs.docker.com/introduction/understanding-docker/
Futuro:
BSD Jails
Solaris Zones
12 Conferencia Latino-americana de Software Livreª
http://docs.master.dockerproject.org/introduction/understanding-docker/
12 Conferencia Latino-americana de Software Livreª
Benefícios
* Baixa curva de aprendizagem/utilização se comparado com
outras tecnologias de containers (LXC, cgroups, etc)
* Comunidade ativa
* Repositório imagens, possibilitando o compartilhamento e
colaboração
* Integração com ferramentas de DevOps (Puppet, Chef,
Vagrant, Ansible)
* Economia de recursos (espaço em disco, processamento,
memória)
* Versionamento e cache
* Suporte empresarial
12 Conferencia Latino-americana de Software Livreª
16/09/14 - http://sdtimes.com/docker-stacks-40-million-round/
* Padronização (popularidade e parcerias)
https://www.docker.com/customers
12 Conferencia Latino-americana de Software Livreª
* Segurança
* Escalabilidade horizontal e vertical
* Orquestração de todo o ambiente
* Deploy facilitado
http://blog.docker.com/2014/06/announcing-docker-hub-and-official-repositories/
12 Conferencia Latino-americana de Software Livreª
* 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
* 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.
12 Conferencia Latino-americana de Software Livreª
Economia de $$$$ (energia, hardware, tempo)!
ZDNet - James Bottomley: com um sistema de
containers perfeitamenete tunado, é possível ter
de quatro a seis vezes o número de instância de
servidores de aplicação do que utilizando VMs
com Xen ou KVM
http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/
CTO virtualização parallels.com
Desenvolvedor Kernel Linux
12 Conferencia Latino-americana de Software Livreª
Instalação
http://docs.docker.com/linux/started/
https://packages.debian.org/search?keywords=docker.io
http://packages.ubuntu.com/search?keywords=docker&searchon=names&suite=all&section=all
https://docs.docker.com/installation/debian/
https://docs.docker.com/installation/ubuntulinux/
12 Conferencia Latino-americana de Software Livreª
Ciclo de uso
https://github.com/wsargent/docker-cheat-sheet
http://superuser.com/questions/756999/whats-the-difference-between-docker-stop-and-docker-kill
* 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
12 Conferencia Latino-americana de Software Livreª
Obtendo informações
https://github.com/wsargent/docker-cheat-sheet
* 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
12 Conferencia Latino-americana de Software Livreª
Outros comandos relevantes
https://github.com/wsargent/docker-cheat-sheet
* 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
12 Conferencia Latino-americana de Software Livreª
Imagens
https://github.com/wsargent/docker-cheat-sheet
* 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).
12 Conferencia Latino-americana de Software Livreª
Dockerfile
https://hub.docker.com/_/hello-world/
https://github.com/docker-library/hello-world/blob/22ecfe456f254d5babe6e413bed2de77cfaba047/Dockerfile
FROM scratch
COPY hello /
CMD ["/hello"]
Hello World
12 Conferencia Latino-americana de Software Livreª
12 Conferencia Latino-americana de Software Livreª
Exemplos de uso
https://github.com/shekhargulati/python-flask-docker-hello-world
FROM debian:8
RUN apt-get update && apt-get install -y python python-pip curl
RUN curl -sSL https://github.com/shekhargulati/python-flask-docker-hello-world/archive/master.tar.gz | tar -xzv
RUN cd python-flask-docker-hello-world-master && /usr/bin/pip install -r requirements.txt
EXPOSE 5000
CMD ["/usr/bin/python", "python-flask-docker-hello-world-master/app.py"]
Python + Flask (372.2 MB)
12 Conferencia Latino-americana de Software Livreª
https://hub.docker.com/_/php/
docker build --tag=imagem-aplicacao-flask .
docker run --interactive --tty --rm --publish 80:5000 --name container-aplicacao-flask imagem-aplicacao-flask
12 Conferencia Latino-americana de Software Livreª
PHP + Apache (480.7 MB)
https://hub.docker.com/_/php/
FROM php:5.6-apache
COPY codigo_fonte/ /var/www/html/
12 Conferencia Latino-americana de Software Livreª
https://hub.docker.com/_/php/
docker build --tag=imagem-aplicacao-teste .
docker run --interactive --tty --rm --publish 80:80 --name container-aplicacao-teste imagem-aplicacao-teste
12 Conferencia Latino-americana de Software Livreª
Java + Wildfly (639 MB)
https://hub.docker.com/r/jboss/wildfly/
FROM jboss/wildfly
ADD aplicacao.ear /opt/jboss/wildfly/standalone/deployments/
12 Conferencia Latino-americana de Software Livreª
https://hub.docker.com/r/jboss/wildfly/
docker build --tag=imagem-aplicacao-wildfly .
docker run --interactive --tty --rm --publish 80:8080 --name container-aplicacao-wildfly imagem-aplicacao-wildfly
12 Conferencia Latino-americana de Software Livreª
man docker-run
https://github.com/wsargent/docker-cheat-sheet#links
docker run -d --name teste1 --hostname teste1 imagem-aplicacao-teste
docker run -d --name teste2 --hostname teste2 --link teste1 imagem-aplicacao-teste
docker exec -it teste1 /bin/bash
root@teste1:/var/www/html# ping teste2
PING teste2 (172.17.0.11): 56 data bytes
64 bytes from 172.17.0.11: icmp_seq=0 ttl=64 time=0.139 ms
64 bytes from 172.17.0.11: icmp_seq=1 ttl=64 time=0.112 ms
64 bytes from 172.17.0.11: icmp_seq=2 ttl=64 time=0.124 ms
64 bytes from 172.17.0.11: icmp_seq=3 ttl=64 time=0.081 ms
^C--- teste2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.081/0.114/0.139/0.000 ms
root@teste1:/var/www/html#
12 Conferencia Latino-americana de Software Livreª
man docker-run
https://github.com/wsargent/docker-cheat-sheet#volumes
https://medium.com/@ramangupta/why-docker-data-containers-are-good-589b3c6c749e
docker run --name=container-dados –hostname=container-dados 
--volume /home/tobias/codigo:/var/www/html -d debian:8 true
docker run --name=teste-volumes --volumes-from=container-dados --publish 80:80 
-d imagem-aplicacao-teste
docker exec -it teste-volumes /bin/bash
root@f3cf1438b914:/var/www/html# ls
css.css index.php js.js
root@f3cf1438b914:/var/www/html#
12 Conferencia Latino-americana de Software Livreª
Firefox
https://hub.docker.com/r/jboss/wildfly/
12 Conferencia Latino-americana de Software Livreª
https://hub.docker.com/r/chrisdaish/firefox/
docker run -v $HOME/Downloads:/home/firefox/Downloads:rw -v /tmp/.X11-unix:/tmp/.X11-unix 
-v /dev/snd:/dev/snd --privileged -e uid=$(id -u) -e gid=$(id -g) -e DISPLAY=unix$DISPLAY 
--name firefox chrisdaish/firefox
12 Conferencia Latino-americana de Software Livreª
Fatores a serem considerados
* Você precisa de outro sistema operacional além do
GNU/Linux
* Você precisa de versões diferentes do kernel linux
* Sua infra não pode ser mista (ubuntu)
* Compreender as modificações feitas na imagem que você está
usando (ex.: Debian)
* Aumento da curva de aprendizagem (imagens personalizadas,
logs, cron, rede)
* está em evolução (ex.: rede)
https://joeyh.name/blog/entry/docker_run_debian/
https://github.com/docker/libnetwork
12 Conferencia Latino-americana de Software Livreª
https://github.com/opencontainers/runc/blob/master/libcontainer/SPEC.md
http://phusion.github.io/baseimage-docker/
* Orientado à serviços únicos e efêmeros
Fix: init (runit), apt, syslog, cron, sshd, setuser
12 Conferencia Latino-americana de Software Livreª
Projetos Interessantes
* Lista de recursos e projetos para Docker
https://github.com/veggiemonk/awesome-docker
* Kubernetes – Gerenciador de clusters de containers
https://github.com/kubernetes/kubernetes
* DockerUI – Interface Web - https://github.com/crosbymichael/dockerui
* Deis – PaaS (Heroku) - https://github.com/deis/deis
* Scripts criação das imagens oficiais https://github.com/docker-library
* Jboss projects - http://www.jboss.org/docker/
* Os 5 mais populares containers docker baseados em java
https://deis.com/blog/2015/ready-made-java-containers-2
12 Conferencia Latino-americana de Software Livreª
DevOPS
* http://martinfowler.com/bliki/DevOpsCulture.html
12 Conferencia Latino-americana de Software Livreª
O que ver na Latinoware 2015
* 14/10 - 13h - Docker, o que é e como usar - Marcos Sungaila
* 14/10 - 13h - Atomic Host + Docker + Cockpit - Alessandro Silva
* 14/10 - 13h - OpenShift v3 - A revolução dos containers - Ricardo Martinelli
* 14/10 - 16h - Containers: passado, presente e futuro - Carlos Eduardo
* 14/10 - 18h - ansible: DevOps simplificado, de sysadmins para sysadmins - Faw
* 15/10 - 13h - Containers versus Virtualização - Marcos Sungaila
* 16/10 - 10h - DevOps: infraestrutura ágil - Faw
* 16/10 - 16:30 - Devops: Base para transformação da TI - Christiano (linuxmen)
Palestras
* 16/10/15 - 10h às 14h - Usando o Docker no ambiente de desenvolvimento - Christiano
(linuxmen)
Minicursos
12 Conferencia Latino-americana de Software Livreª
Busque!
Não acredite em nada, mas entenda o quanto
puder.
Esta palestra pode lhe dar um rumo ou ideias,
mas não certezas. Descubra por você mesmo e
poderá fixar melhor as informações.
Dúvidas?
Contato:
contato@tobias.ws
https://github.com/gnumoksha/
https://twitter.com/gnumoksha
12 Conferencia Latino-americana de Software Livreª

Mais conteúdo relacionado

Mais procurados

Administração de Redes Linux - I
Administração de Redes Linux - IAdministração de Redes Linux - I
Administração de Redes Linux - I
Marcelo Barros de Almeida
 
Apostila packet tracer 5.3
Apostila packet tracer 5.3Apostila packet tracer 5.3
Apostila packet tracer 5.3
Jakson Silva
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
Camilo Ribeiro
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
Marcia Abrahim
 
Administração de Redes Linux - II
Administração de Redes Linux - IIAdministração de Redes Linux - II
Administração de Redes Linux - II
Marcelo Barros de Almeida
 
Apresentação Linux
Apresentação LinuxApresentação Linux
Apresentação Linux
guestca430
 
Vantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidoresVantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidores
Tudosbinformatica .blogspot.com
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
Daniel Maia
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidoresMarco Guimarães
 
Setup; bios; post.
Setup; bios; post.Setup; bios; post.
Setup; bios; post.
Jessica16holanda
 
Conceitos de sistemas operacionais
Conceitos de sistemas operacionaisConceitos de sistemas operacionais
Conceitos de sistemas operacionais
Aparicio Junior
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
Norberto Enomoto
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
thomasdacosta
 
Instalação, configuração e administração de um SO Cliente/Servidor
Instalação, configuração e administração de um SO Cliente/ServidorInstalação, configuração e administração de um SO Cliente/Servidor
Instalação, configuração e administração de um SO Cliente/Servidor
Edgar Costa
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dados
diogocbj
 
Virtualização - Máquinas Virtuais
Virtualização - Máquinas VirtuaisVirtualização - Máquinas Virtuais
Virtualização - Máquinas Virtuais
André Felipe Santos Martins
 
Módulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfMódulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdf
FChico2
 
Criando o Primeiro Projeto no Android Studio
Criando o Primeiro Projeto no Android StudioCriando o Primeiro Projeto no Android Studio
Criando o Primeiro Projeto no Android Studio
Tiago Antônio da Silva
 
Windows server , curso completo
Windows server , curso completoWindows server , curso completo
Windows server , curso completo
Pessoal
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Sérgio Souza Costa
 

Mais procurados (20)

Administração de Redes Linux - I
Administração de Redes Linux - IAdministração de Redes Linux - I
Administração de Redes Linux - I
 
Apostila packet tracer 5.3
Apostila packet tracer 5.3Apostila packet tracer 5.3
Apostila packet tracer 5.3
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Administração de Redes Linux - II
Administração de Redes Linux - IIAdministração de Redes Linux - II
Administração de Redes Linux - II
 
Apresentação Linux
Apresentação LinuxApresentação Linux
Apresentação Linux
 
Vantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidoresVantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidores
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores
 
Setup; bios; post.
Setup; bios; post.Setup; bios; post.
Setup; bios; post.
 
Conceitos de sistemas operacionais
Conceitos de sistemas operacionaisConceitos de sistemas operacionais
Conceitos de sistemas operacionais
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Instalação, configuração e administração de um SO Cliente/Servidor
Instalação, configuração e administração de um SO Cliente/ServidorInstalação, configuração e administração de um SO Cliente/Servidor
Instalação, configuração e administração de um SO Cliente/Servidor
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dados
 
Virtualização - Máquinas Virtuais
Virtualização - Máquinas VirtuaisVirtualização - Máquinas Virtuais
Virtualização - Máquinas Virtuais
 
Módulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdfMódulo 3-Sistema Operativo Servidor - V3.pdf
Módulo 3-Sistema Operativo Servidor - V3.pdf
 
Criando o Primeiro Projeto no Android Studio
Criando o Primeiro Projeto no Android StudioCriando o Primeiro Projeto no Android Studio
Criando o Primeiro Projeto no Android Studio
 
Windows server , curso completo
Windows server , curso completoWindows server , curso completo
Windows server , curso completo
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 

Destaque

Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
Fernando Ike
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de Docker
Stefan Teixeira
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
Bruno Ricardo Siqueira
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
André Justi
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
Leonardo de Oliveira
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
Marcelo Fleury
 
Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm
Amazon Web Services LATAM
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
Sérgio Lima
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre Docker
Luís Bianchin
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
Wellington Silva
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
Hugo Leonardo Costa e Silva
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
Hugo Henley
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
Amazon Web Services LATAM
 
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com BeanstalkAWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
Amazon Web Services LATAM
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
 
Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your Software
Laura Frank Tacho
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
Mauricio Martins
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engine
Hudson Brendon
 
Docker
DockerDocker
Atividade5
Atividade5Atividade5
Atividade5abramo
 

Destaque (20)

Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de Docker
 
Desenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando DockerDesenvolvendo e implantando aplicações PHP utilizando Docker
Desenvolvendo e implantando aplicações PHP utilizando Docker
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm Webinar: Apresentando AWS Device Farm
Webinar: Apresentando AWS Device Farm
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
Verdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre DockerVerdades que não querem te contar sobre Docker
Verdades que não querem te contar sobre Docker
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
 
5. rodando containers docker na aws
5. rodando containers docker na aws5. rodando containers docker na aws
5. rodando containers docker na aws
 
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com BeanstalkAWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
AWS Experience Fortaleza: Escalando sua aplicação Web com Beanstalk
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your Software
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engine
 
Docker
DockerDocker
Docker
 
Atividade5
Atividade5Atividade5
Atividade5
 

Semelhante a Docker: uma visão geral e exemplos de uso

Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
Eustaquio Guimaraes mendesbsb
 
Docker e suas tecnologias
Docker e suas tecnologiasDocker e suas tecnologias
Docker e suas tecnologias
Cesar Augusto Nogueira
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnog
Cesar Augusto Nogueira
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersFrancisco Gonçalves
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
Fernando Ike
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
WebSix
 
Olá docker
Olá dockerOlá docker
Olá docker
Marcos Ellys
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
Morvana Bonin
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
Wallison Marra
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
André Justi
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
Matheus Fidelis
 
Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)
Wellington Silva
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
Renato Lucena
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
dadalt1
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
Rodrigo Emereciano
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
TechCobli
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
iMasters
 
Trabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerTrabalhando em ambientes php com docker
Trabalhando em ambientes php com docker
Alef Castelo
 
Docker
DockerDocker
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
Benicio Ávila
 

Semelhante a Docker: uma visão geral e exemplos de uso (20)

Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Docker e suas tecnologias
Docker e suas tecnologiasDocker e suas tecnologias
Docker e suas tecnologias
 
Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnog
 
Re pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containersRe pensando-virtualização-através-linux containers
Re pensando-virtualização-através-linux containers
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)Docker do básico a orquestração (PHPeste2016)
Docker do básico a orquestração (PHPeste2016)
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
Usp codelabs (docker)
Usp codelabs (docker)Usp codelabs (docker)
Usp codelabs (docker)
 
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
 
Trabalhando em ambientes php com docker
Trabalhando em ambientes php com dockerTrabalhando em ambientes php com docker
Trabalhando em ambientes php com docker
 
Docker
DockerDocker
Docker
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 

Docker: uma visão geral e exemplos de uso

  • 1. Docker: uma visão geral e exemplos de uso Palestrante: Tobias Sette 12 Conferencia Latino-americana de Software Livreª12 Conferencia Latino-americana de Software Livreª
  • 2. 12 Conferencia Latino-americana de Software Livreª O que é docker? Docker é um projeto open source (Apache License 2.0) para empacotar, enviar e executar diversas aplicações em leves containers. Containers docker são independentes de hardware e plataforma. Tornando possível executá-los em diversos ambientes, desde o seu notebook até grandes ambientes em nuvem - e eles não requerem que você utilize uma linguagem, framework ou sistema de pacotes específico. Isto os torna uma excelente ferramenta para deploy e escalabilidade de aplicativos web, bancos de dados e serviços de backend sem depender de um provedor ou stack em particular. https://github.com/docker/docker
  • 3. 12 Conferencia Latino-americana de Software Livreª A grosso modo, assim como o Pip está para o Python e o npm para o Node, o Docker está para ambientes. Criando apenas as tecnologias que faltavam, sem reinventar a roda.
  • 4. 12 Conferencia Latino-americana de Software Livreª O projeto foi liberado, como uma engine para deploy, em março de 2013 pela startup dotCloud. Em abril de 2015 a empresa passou a ter 1 bilhão de dólares em valor de mercado. Em outubro de 2015 o ecossistema conta com vários projetos: Docker engine, Docker Registry, Docker Hub, Docker Hub Enterprise, Docker Machine, Docker Compose, Kitematic, Docker Swarm. https://en.wikipedia.org/wiki/Docker_%28software%29 http://docs.master.dockerproject.org/ http://www.forbes.com/sites/alexkonrad/2015/04/14/docker-raises-95-million-at-billion-valuation/
  • 5. 12 Conferencia Latino-americana de Software Livreª 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. https://en.wikipedia.org/wiki/Operating-system-level_virtualization http://doger.io/
  • 6. 12 Conferencia Latino-americana de Software Livreª VMs vs. Containers http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/
  • 7. 12 Conferencia Latino-americana de Software Livreª Tecnologia de virtualização do Docker https://en.wikipedia.org/wiki/Docker_%28software%29 https://docs.docker.com/introduction/understanding-docker/ Futuro: BSD Jails Solaris Zones
  • 8. 12 Conferencia Latino-americana de Software Livreª http://docs.master.dockerproject.org/introduction/understanding-docker/
  • 9. 12 Conferencia Latino-americana de Software Livreª Benefícios * Baixa curva de aprendizagem/utilização se comparado com outras tecnologias de containers (LXC, cgroups, etc) * Comunidade ativa * Repositório imagens, possibilitando o compartilhamento e colaboração * Integração com ferramentas de DevOps (Puppet, Chef, Vagrant, Ansible) * Economia de recursos (espaço em disco, processamento, memória) * Versionamento e cache * Suporte empresarial
  • 10. 12 Conferencia Latino-americana de Software Livreª 16/09/14 - http://sdtimes.com/docker-stacks-40-million-round/ * Padronização (popularidade e parcerias) https://www.docker.com/customers
  • 11. 12 Conferencia Latino-americana de Software Livreª * Segurança * Escalabilidade horizontal e vertical * Orquestração de todo o ambiente * Deploy facilitado http://blog.docker.com/2014/06/announcing-docker-hub-and-official-repositories/
  • 12. 12 Conferencia Latino-americana de Software Livreª * 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 * 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.
  • 13. 12 Conferencia Latino-americana de Software Livreª Economia de $$$$ (energia, hardware, tempo)! ZDNet - James Bottomley: com um sistema de containers perfeitamenete tunado, é possível ter de quatro a seis vezes o número de instância de servidores de aplicação do que utilizando VMs com Xen ou KVM http://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/ CTO virtualização parallels.com Desenvolvedor Kernel Linux
  • 14. 12 Conferencia Latino-americana de Software Livreª Instalação http://docs.docker.com/linux/started/ https://packages.debian.org/search?keywords=docker.io http://packages.ubuntu.com/search?keywords=docker&searchon=names&suite=all&section=all https://docs.docker.com/installation/debian/ https://docs.docker.com/installation/ubuntulinux/
  • 15. 12 Conferencia Latino-americana de Software Livreª Ciclo de uso https://github.com/wsargent/docker-cheat-sheet http://superuser.com/questions/756999/whats-the-difference-between-docker-stop-and-docker-kill * 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
  • 16. 12 Conferencia Latino-americana de Software Livreª Obtendo informações https://github.com/wsargent/docker-cheat-sheet * 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
  • 17. 12 Conferencia Latino-americana de Software Livreª Outros comandos relevantes https://github.com/wsargent/docker-cheat-sheet * 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
  • 18. 12 Conferencia Latino-americana de Software Livreª Imagens https://github.com/wsargent/docker-cheat-sheet * 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).
  • 19. 12 Conferencia Latino-americana de Software Livreª Dockerfile https://hub.docker.com/_/hello-world/ https://github.com/docker-library/hello-world/blob/22ecfe456f254d5babe6e413bed2de77cfaba047/Dockerfile FROM scratch COPY hello / CMD ["/hello"] Hello World
  • 20. 12 Conferencia Latino-americana de Software Livreª
  • 21. 12 Conferencia Latino-americana de Software Livreª Exemplos de uso https://github.com/shekhargulati/python-flask-docker-hello-world FROM debian:8 RUN apt-get update && apt-get install -y python python-pip curl RUN curl -sSL https://github.com/shekhargulati/python-flask-docker-hello-world/archive/master.tar.gz | tar -xzv RUN cd python-flask-docker-hello-world-master && /usr/bin/pip install -r requirements.txt EXPOSE 5000 CMD ["/usr/bin/python", "python-flask-docker-hello-world-master/app.py"] Python + Flask (372.2 MB)
  • 22. 12 Conferencia Latino-americana de Software Livreª https://hub.docker.com/_/php/ docker build --tag=imagem-aplicacao-flask . docker run --interactive --tty --rm --publish 80:5000 --name container-aplicacao-flask imagem-aplicacao-flask
  • 23. 12 Conferencia Latino-americana de Software Livreª PHP + Apache (480.7 MB) https://hub.docker.com/_/php/ FROM php:5.6-apache COPY codigo_fonte/ /var/www/html/
  • 24. 12 Conferencia Latino-americana de Software Livreª https://hub.docker.com/_/php/ docker build --tag=imagem-aplicacao-teste . docker run --interactive --tty --rm --publish 80:80 --name container-aplicacao-teste imagem-aplicacao-teste
  • 25. 12 Conferencia Latino-americana de Software Livreª Java + Wildfly (639 MB) https://hub.docker.com/r/jboss/wildfly/ FROM jboss/wildfly ADD aplicacao.ear /opt/jboss/wildfly/standalone/deployments/
  • 26. 12 Conferencia Latino-americana de Software Livreª https://hub.docker.com/r/jboss/wildfly/ docker build --tag=imagem-aplicacao-wildfly . docker run --interactive --tty --rm --publish 80:8080 --name container-aplicacao-wildfly imagem-aplicacao-wildfly
  • 27. 12 Conferencia Latino-americana de Software Livreª man docker-run https://github.com/wsargent/docker-cheat-sheet#links docker run -d --name teste1 --hostname teste1 imagem-aplicacao-teste docker run -d --name teste2 --hostname teste2 --link teste1 imagem-aplicacao-teste docker exec -it teste1 /bin/bash root@teste1:/var/www/html# ping teste2 PING teste2 (172.17.0.11): 56 data bytes 64 bytes from 172.17.0.11: icmp_seq=0 ttl=64 time=0.139 ms 64 bytes from 172.17.0.11: icmp_seq=1 ttl=64 time=0.112 ms 64 bytes from 172.17.0.11: icmp_seq=2 ttl=64 time=0.124 ms 64 bytes from 172.17.0.11: icmp_seq=3 ttl=64 time=0.081 ms ^C--- teste2 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.081/0.114/0.139/0.000 ms root@teste1:/var/www/html#
  • 28. 12 Conferencia Latino-americana de Software Livreª man docker-run https://github.com/wsargent/docker-cheat-sheet#volumes https://medium.com/@ramangupta/why-docker-data-containers-are-good-589b3c6c749e docker run --name=container-dados –hostname=container-dados --volume /home/tobias/codigo:/var/www/html -d debian:8 true docker run --name=teste-volumes --volumes-from=container-dados --publish 80:80 -d imagem-aplicacao-teste docker exec -it teste-volumes /bin/bash root@f3cf1438b914:/var/www/html# ls css.css index.php js.js root@f3cf1438b914:/var/www/html#
  • 29. 12 Conferencia Latino-americana de Software Livreª Firefox https://hub.docker.com/r/jboss/wildfly/
  • 30. 12 Conferencia Latino-americana de Software Livreª https://hub.docker.com/r/chrisdaish/firefox/ docker run -v $HOME/Downloads:/home/firefox/Downloads:rw -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev/snd:/dev/snd --privileged -e uid=$(id -u) -e gid=$(id -g) -e DISPLAY=unix$DISPLAY --name firefox chrisdaish/firefox
  • 31. 12 Conferencia Latino-americana de Software Livreª Fatores a serem considerados * Você precisa de outro sistema operacional além do GNU/Linux * Você precisa de versões diferentes do kernel linux * Sua infra não pode ser mista (ubuntu) * Compreender as modificações feitas na imagem que você está usando (ex.: Debian) * Aumento da curva de aprendizagem (imagens personalizadas, logs, cron, rede) * está em evolução (ex.: rede) https://joeyh.name/blog/entry/docker_run_debian/ https://github.com/docker/libnetwork
  • 32. 12 Conferencia Latino-americana de Software Livreª https://github.com/opencontainers/runc/blob/master/libcontainer/SPEC.md http://phusion.github.io/baseimage-docker/ * Orientado à serviços únicos e efêmeros Fix: init (runit), apt, syslog, cron, sshd, setuser
  • 33. 12 Conferencia Latino-americana de Software Livreª Projetos Interessantes * Lista de recursos e projetos para Docker https://github.com/veggiemonk/awesome-docker * Kubernetes – Gerenciador de clusters de containers https://github.com/kubernetes/kubernetes * DockerUI – Interface Web - https://github.com/crosbymichael/dockerui * Deis – PaaS (Heroku) - https://github.com/deis/deis * Scripts criação das imagens oficiais https://github.com/docker-library * Jboss projects - http://www.jboss.org/docker/ * Os 5 mais populares containers docker baseados em java https://deis.com/blog/2015/ready-made-java-containers-2
  • 34. 12 Conferencia Latino-americana de Software Livreª DevOPS * http://martinfowler.com/bliki/DevOpsCulture.html
  • 35. 12 Conferencia Latino-americana de Software Livreª O que ver na Latinoware 2015 * 14/10 - 13h - Docker, o que é e como usar - Marcos Sungaila * 14/10 - 13h - Atomic Host + Docker + Cockpit - Alessandro Silva * 14/10 - 13h - OpenShift v3 - A revolução dos containers - Ricardo Martinelli * 14/10 - 16h - Containers: passado, presente e futuro - Carlos Eduardo * 14/10 - 18h - ansible: DevOps simplificado, de sysadmins para sysadmins - Faw * 15/10 - 13h - Containers versus Virtualização - Marcos Sungaila * 16/10 - 10h - DevOps: infraestrutura ágil - Faw * 16/10 - 16:30 - Devops: Base para transformação da TI - Christiano (linuxmen) Palestras * 16/10/15 - 10h às 14h - Usando o Docker no ambiente de desenvolvimento - Christiano (linuxmen) Minicursos
  • 36. 12 Conferencia Latino-americana de Software Livreª Busque! Não acredite em nada, mas entenda o quanto puder. Esta palestra pode lhe dar um rumo ou ideias, mas não certezas. Descubra por você mesmo e poderá fixar melhor as informações.

Notas do Editor

  1. docker garantir que sempre rode igual = coloque pouca coisa, menos coisas mudarão e influenciarão o comportamento * Tem um ambiente dev que pode ser criado automaticamente em __minutos__ e não precisar se preocupar se suas ferramentas (IDE, libs, etc) vão cusar algum conflito em produção. * Sem inconsistências entre ambiente de dev e produção. Rodou localmente = rodou em testes = rodou remotamente.