SlideShare uma empresa Scribd logo
Docker!
Um minicurso pra você e pra mim!
Alessandro Dias
@adbatista
alessandrodbatista@gmail.com
Fabio L. Janiszevski
● >15 anos com experiência profissional em Linux;
● Mantenedor do projeto “SmartRouter PROJECT”;
● >8 anos de experiência com servidores de alta
disponibilidade;
● >3 anos de desenvolvimento WEB na empresa
“Ponto Gestor”;
● Professor do ensino superior pela “UTFPR”;
Ponto Gestor
● Empresa com objetivo de fornecer franquia de plataforma;
● Fornece plataforma de sistema para tratamento de pontos;
● Horas trabalhistas, integração com folha de pagamento e
desempenho de colaboradores;
● Nasceu em 2013 a partir da “Crachá Digital”;
● Juntas somam mais de 25 anos em experiência
com relógio ponto;
● Atuação nacional;
Roteiro
● Docker?
● Ambiente;
● Possibilidades;
● Iniciando com o docker;
● Hello world!
● Demonstrações cotidianas com o ruby;
● O que você pode encaixar?
● Onde aprender mais?
O que é o Docker?
Arquitetura
Arquitetura
Imagem Docker: A base para um container docker;
Container Docker: O processo docker que está rodando
efetivamente a imagem, é onde sua aplicação reside;
Engine Docker: Cria, entrega, e executa containers,
“deploiaveis” em uma máquina fisica ou virtual, em um data
center ou um serviço em nuvem;
Registry Docker: “Github” docker(dockerhub), onde armazenar
e compartilhar imagens docker;
Comunidade e empresa (Dados do ano passado - 2016)
Comunidade:
● 2B+ de downloads de imagens;
● 2000+ contribuidores;
● 40K+ estrelas no github;
● 200K+ apps dockerizadas;
● 240 meetups em 70 países;
● 95K membros de meetup;
Docker Inc.:
● Container como serviço;
● Plataforma de integração;
● Suporte técnico comercial;
● Principal patocinador do
projeto docker;
● Suporta mantenedores do
projeto;
Ecossitema
Quem usa docker?
Porque utilizar o
Docker?
Aplicações mudam…
Desafios aumentam…
Badabim… badabá!
● Pacotes com binários e
suas dependências;
● Softwares isolados uns
dos outros;
● Container como formato
padrão;
● Fácil portabilidade
entre ambientes
GNU/Linux;
● Permite padronização no
processo de
desenvolvimento;
O que contém o “container”?
Exemplo! ● docker pull redis
● docker run --rm --network="host" 
-p 6379:6379 redis
Pensem: Necessito de um storage em
memória, mas somente para testar
São muitos
argumentos!
Dockerfile!
docker build -t .
FROM redis:alpine
MAINTAINER TSI version: 0.1
EXPOSE 6379
CMD ["redis-server"]
Comandos básicos
● docker pull <nome da imagem>; Baixa a imagem;
● docker images; Lista as imagens;
● docker inspect <id da imagem ou container>;
● docker run <nome da imagem>; Inicia um container;
● docker ps; Lista containers em execução;
● docker ps -a; Lista todos os containers;
● docker exec <nome do container> <cmd>; Executa um comando
no container;
It’s show time!
Abram vossos
terminais!
Passos iniciais
● ~$ docker pull ruby
● ~$ docker images
● ~$ docker inspect ruby (Verificar o “CMD”)
Parametros para execução(docker run)
-d Execução em Background
--name Nomear o container
-m Limitar o uso de memória RAM
-c Balancear o uso da CPU
-p Mapear portas de rede
-v Mapear unidades de disco/diretórios
-i Modo interativo
-t Alocar um pseudo tty
Executando uma
imagem
~$ docker run -it ruby
irb(main):001:0> puts
“Hello World”
irb(main):002:0> exitTransformando a imagem em
container
Definindo recursos
Não perca recursos para o
processo.
Java cof cof...
~$ docker run -it -m 300M
java
CPU é balanceamento!
Valor padrão: 1024
Menor: Menor prioridade
Maior: Maior prioridade
ATENÇÃO! Processos
sempre são
voláteis, não
“lembram”.
Continuando
● O run transforma a imagem em processo de um container;
● Como recuperar?
● ~$ docker run -it ruby
● irb(main):001:0> exit
● ~$ docker ps -a
● ~$ docker run -it ruby
● irb(main):001:0> exit
● ~$ docker ps -a
OMG!!!!
Estado de processos
~$ docker start <nome do container>
~$ docker attach <nome do container>
irb(main):001:0> exit
~$ docker ps -a
~$ docker rm <nome do container que deseja remover>
E depois?
● Caso queira “salvar” o estado do container em uma nova
imagem:
○ docker commit <nome do container> username/ruby:20170927
● Recuperar o estado da mesma:
○ docker run -it --name ruby_20170927 username/ruby:20170927
○ exit
○ docker start ruby_20170927
○ docker attach ruby_20170927
Como faço para executar outra coisa?
~$ docker start <nome do container>
~$ docker exec -it ruby /bin/bash
Outras Ferramentas
● Docker CLI:
● Docker Machine:
● Docker SWARM:
● Docker Compose:
● Rancher:
● Kitematic:
Onde aprender mais?
● https://github.com/gomex/docker-para-desenvolvedores
● http://techfree.com.br/
Muito obrigado!
fabiosammy@gmail.com

Mais conteúdo relacionado

Mais procurados

Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
Michael Castillo Granados
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
Tobias Sette
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
Rodrigo Emereciano
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
Mauricio Martins
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
Waldemar Neto
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
Matheus Fidelis
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
MOSS Open Source Services
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
Marcelo Fleury
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
Hugo Leonardo Costa e Silva
 
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
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
André Justi
 
Olá docker
Olá dockerOlá docker
Olá docker
Marcos Ellys
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
Eustaquio Guimaraes mendesbsb
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
Leonardo de Oliveira
 
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
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
Rhuan Karlus Silva
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
Waldemar Neto
 
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
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
André Justi
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e Docker
Lucas Arbiza
 

Mais procurados (20)

Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
Docker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de usoDocker: uma visão geral e exemplos de uso
Docker: uma visão geral e exemplos de uso
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
Apresentacao docker
Apresentacao dockerApresentacao docker
Apresentacao docker
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Introdução à plataforma Docker
Introdução à plataforma DockerIntrodução à plataforma Docker
Introdução à plataforma Docker
 
Apresentação docker
Apresentação dockerApresentação docker
Apresentação docker
 
Introdução ao docker
Introdução ao dockerIntrodução ao docker
Introdução ao docker
 
Docker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimentoDocker, facilitando a vida do desenvolvimento
Docker, facilitando a vida do desenvolvimento
 
Treinamento Docker Básico
Treinamento Docker BásicoTreinamento Docker Básico
Treinamento Docker Básico
 
Olá docker
Olá dockerOlá docker
Olá docker
 
Freedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, dockerFreedomday2016 - Fique na caixinha, docker
Freedomday2016 - Fique na caixinha, docker
 
Bem vindo ao Docker
Bem vindo ao DockerBem vindo ao Docker
Bem vindo ao Docker
 
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
 
Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e 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)
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
DevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e DockerDevOps e redes -- SDN NFV e Docker
DevOps e redes -- SDN NFV e Docker
 

Semelhante a Docker - minicurso utfpr 2017

Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
Evandro Silvestre
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
George Moura
 
CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018
Jonh Wendell
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
tdc-globalcode
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
Marcio Trindade
 
JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorld
Thiago Soares
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
Rafael Chiavegatto
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
michel adriano medeiros
 
Docker
DockerDocker
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e Compose
Roberto Hashioka
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
Thiago Cifani
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com Docker
Aécio Pires
 
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
 
Bricklayer
BricklayerBricklayer
Bricklayer
Rodrigo Vaz
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
Matheus Fidelis
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
dadalt1
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engine
Hudson Brendon
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
Rafael Gomes
 
Dockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechDockerizando aplicações em uma Fintech
Dockerizando aplicações em uma Fintech
Rafael Gomes
 
Docker e vagrant para mortais
Docker e vagrant para mortaisDocker e vagrant para mortais
Docker e vagrant para mortais
Clayton Santos da Silva
 

Semelhante a Docker - minicurso utfpr 2017 (20)

Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Introdução ao Docker
Introdução ao DockerIntrodução ao Docker
Introdução ao Docker
 
CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018CRI-O - TDC Floripa 2018
CRI-O - TDC Floripa 2018
 
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containersTDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
TDC2018SP | Trilha Containers - CRI-O: Nem so de Docker vivem os containers
 
Alagoas Dev Day
Alagoas Dev DayAlagoas Dev Day
Alagoas Dev Day
 
JavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorldJavaDay2018 - Docker - Além do HelloWorld
JavaDay2018 - Docker - Além do HelloWorld
 
Docker - Tutorial for beginners
Docker - Tutorial for beginnersDocker - Tutorial for beginners
Docker - Tutorial for beginners
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
Docker
DockerDocker
Docker
 
Orquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e ComposeOrquestrando Docker Containers: Machine, Swarm e Compose
Orquestrando Docker Containers: Machine, Swarm e Compose
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Transportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com DockerTransportando as aplicações entre vários ambientes com Docker
Transportando as aplicações entre vários ambientes com Docker
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Bricklayer
BricklayerBricklayer
Bricklayer
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
 
Introdução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdfIntrodução-a-Docker-compactado.pdf
Introdução-a-Docker-compactado.pdf
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engine
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
Dockerizando aplicações em uma Fintech
Dockerizando aplicações em uma FintechDockerizando aplicações em uma Fintech
Dockerizando aplicações em uma Fintech
 
Docker e vagrant para mortais
Docker e vagrant para mortaisDocker e vagrant para mortais
Docker e vagrant para mortais
 

Docker - minicurso utfpr 2017

  • 1. Docker! Um minicurso pra você e pra mim!
  • 3.
  • 4. Fabio L. Janiszevski ● >15 anos com experiência profissional em Linux; ● Mantenedor do projeto “SmartRouter PROJECT”; ● >8 anos de experiência com servidores de alta disponibilidade; ● >3 anos de desenvolvimento WEB na empresa “Ponto Gestor”; ● Professor do ensino superior pela “UTFPR”;
  • 5. Ponto Gestor ● Empresa com objetivo de fornecer franquia de plataforma; ● Fornece plataforma de sistema para tratamento de pontos; ● Horas trabalhistas, integração com folha de pagamento e desempenho de colaboradores; ● Nasceu em 2013 a partir da “Crachá Digital”; ● Juntas somam mais de 25 anos em experiência com relógio ponto; ● Atuação nacional;
  • 6. Roteiro ● Docker? ● Ambiente; ● Possibilidades; ● Iniciando com o docker; ● Hello world! ● Demonstrações cotidianas com o ruby; ● O que você pode encaixar? ● Onde aprender mais?
  • 7. O que é o Docker?
  • 9. Arquitetura Imagem Docker: A base para um container docker; Container Docker: O processo docker que está rodando efetivamente a imagem, é onde sua aplicação reside; Engine Docker: Cria, entrega, e executa containers, “deploiaveis” em uma máquina fisica ou virtual, em um data center ou um serviço em nuvem; Registry Docker: “Github” docker(dockerhub), onde armazenar e compartilhar imagens docker;
  • 10. Comunidade e empresa (Dados do ano passado - 2016) Comunidade: ● 2B+ de downloads de imagens; ● 2000+ contribuidores; ● 40K+ estrelas no github; ● 200K+ apps dockerizadas; ● 240 meetups em 70 países; ● 95K membros de meetup; Docker Inc.: ● Container como serviço; ● Plataforma de integração; ● Suporte técnico comercial; ● Principal patocinador do projeto docker; ● Suporta mantenedores do projeto;
  • 16. Badabim… badabá! ● Pacotes com binários e suas dependências; ● Softwares isolados uns dos outros; ● Container como formato padrão; ● Fácil portabilidade entre ambientes GNU/Linux; ● Permite padronização no processo de desenvolvimento; O que contém o “container”?
  • 17. Exemplo! ● docker pull redis ● docker run --rm --network="host" -p 6379:6379 redis Pensem: Necessito de um storage em memória, mas somente para testar
  • 18. São muitos argumentos! Dockerfile! docker build -t . FROM redis:alpine MAINTAINER TSI version: 0.1 EXPOSE 6379 CMD ["redis-server"]
  • 19. Comandos básicos ● docker pull <nome da imagem>; Baixa a imagem; ● docker images; Lista as imagens; ● docker inspect <id da imagem ou container>; ● docker run <nome da imagem>; Inicia um container; ● docker ps; Lista containers em execução; ● docker ps -a; Lista todos os containers; ● docker exec <nome do container> <cmd>; Executa um comando no container;
  • 20. It’s show time! Abram vossos terminais!
  • 21. Passos iniciais ● ~$ docker pull ruby ● ~$ docker images ● ~$ docker inspect ruby (Verificar o “CMD”)
  • 22. Parametros para execução(docker run) -d Execução em Background --name Nomear o container -m Limitar o uso de memória RAM -c Balancear o uso da CPU -p Mapear portas de rede -v Mapear unidades de disco/diretórios -i Modo interativo -t Alocar um pseudo tty
  • 23. Executando uma imagem ~$ docker run -it ruby irb(main):001:0> puts “Hello World” irb(main):002:0> exitTransformando a imagem em container
  • 24. Definindo recursos Não perca recursos para o processo. Java cof cof... ~$ docker run -it -m 300M java
  • 25. CPU é balanceamento! Valor padrão: 1024 Menor: Menor prioridade Maior: Maior prioridade
  • 27. Continuando ● O run transforma a imagem em processo de um container; ● Como recuperar? ● ~$ docker run -it ruby ● irb(main):001:0> exit ● ~$ docker ps -a ● ~$ docker run -it ruby ● irb(main):001:0> exit ● ~$ docker ps -a OMG!!!!
  • 28. Estado de processos ~$ docker start <nome do container> ~$ docker attach <nome do container> irb(main):001:0> exit ~$ docker ps -a ~$ docker rm <nome do container que deseja remover>
  • 29. E depois? ● Caso queira “salvar” o estado do container em uma nova imagem: ○ docker commit <nome do container> username/ruby:20170927 ● Recuperar o estado da mesma: ○ docker run -it --name ruby_20170927 username/ruby:20170927 ○ exit ○ docker start ruby_20170927 ○ docker attach ruby_20170927
  • 30. Como faço para executar outra coisa? ~$ docker start <nome do container> ~$ docker exec -it ruby /bin/bash
  • 31. Outras Ferramentas ● Docker CLI: ● Docker Machine: ● Docker SWARM: ● Docker Compose: ● Rancher: ● Kitematic:
  • 32. Onde aprender mais? ● https://github.com/gomex/docker-para-desenvolvedores ● http://techfree.com.br/