SlideShare une entreprise Scribd logo
1  sur  37
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ª

Contenu connexe

Tendances

Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker BásicoAndré Justi
 
Caderno de info(banco de dados).
Caderno de info(banco de dados).Caderno de info(banco de dados).
Caderno de info(banco de dados).Ajudar Pessoas
 
Presentación stylus
Presentación   stylusPresentación   stylus
Presentación stylusiOS23
 
Introdução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de SoftwareIntrodução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de SoftwareCamilo Almendra
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetesKiwi Backup
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Docker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersDocker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersYajushi Srivastava
 
Aula1-Conceitos de SGBD
Aula1-Conceitos de SGBDAula1-Conceitos de SGBD
Aula1-Conceitos de SGBDCris Fidelix
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoMorvana Bonin
 
Apresentação java
Apresentação javaApresentação java
Apresentação javamunosai
 
Bddm recuperação de falhas em banco distribuido
Bddm   recuperação de falhas em banco distribuidoBddm   recuperação de falhas em banco distribuido
Bddm recuperação de falhas em banco distribuidoAntonio Ezequiel Mendonça
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 

Tendances (20)

Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Caderno de info(banco de dados).
Caderno de info(banco de dados).Caderno de info(banco de dados).
Caderno de info(banco de dados).
 
Dockerfile
Dockerfile Dockerfile
Dockerfile
 
Presentación stylus
Presentación   stylusPresentación   stylus
Presentación stylus
 
Introdução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de SoftwareIntrodução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de Software
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
Fundamentos do java
Fundamentos do javaFundamentos do java
Fundamentos do java
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Docker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersDocker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and Containers
 
Aula1-Conceitos de SGBD
Aula1-Conceitos de SGBDAula1-Conceitos de SGBD
Aula1-Conceitos de SGBD
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Microservices, Containers and Docker
Microservices, Containers and DockerMicroservices, Containers and Docker
Microservices, Containers and Docker
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Arquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introduçãoArquitetura Hexagonal: uma introdução
Arquitetura Hexagonal: uma introdução
 
Aula 06 - Diagrama de classes
Aula 06 - Diagrama de classesAula 06 - Diagrama de classes
Aula 06 - Diagrama de classes
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Docker
DockerDocker
Docker
 
Bddm recuperação de falhas em banco distribuido
Bddm   recuperação de falhas em banco distribuidoBddm   recuperação de falhas em banco distribuido
Bddm recuperação de falhas em banco distribuido
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 

En vedette

Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando 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 DockerStefan 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 DockerBruno Ricardo Siqueira
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoSé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 DockerLuí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
 
Deploying Docker Containers
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker ContainersHugo Henley
 
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 BeanstalkAmazon Web Services LATAM
 
Docker introduction
Docker introductionDocker introduction
Docker introductiondotCloud
 
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 SoftwareLaura Frank Tacho
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engineHudson Brendon
 
Atividade5
Atividade5Atividade5
Atividade5abramo
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 

En vedette (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
 
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
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 

Similaire à Docker: uma visão geral e exemplos de uso

Docker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogDocker e suas tecnologias por @cesarnog
Docker e suas tecnologias por @cesarnogCesar 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 revolucaoFernando Ike
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o DockerWebSix
 
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
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaMatheus 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
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfdadalt1
 
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 dockerAlef Castelo
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginnersRafael Chiavegatto
 

Similaire à 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
 
Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis Docker 101 e Ambientes Imutáveis
Docker 101 e Ambientes Imutáveis
 
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 - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
 

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.

Notes de l'éditeur

  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.