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

Docker - minicurso utfpr 2017

  • 1.
    Docker! Um minicurso pravocê e pra mim!
  • 2.
  • 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 ● Empresacom 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?
  • 8.
  • 9.
    Arquitetura Imagem Docker: Abase 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;
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
    Badabim… badabá! ● Pacotescom 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! ● dockerpull 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 ● dockerpull <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! Abramvossos terminais!
  • 21.
    Passos iniciais ● ~$docker pull ruby ● ~$ docker images ● ~$ docker inspect ruby (Verificar o “CMD”)
  • 22.
    Parametros para execução(dockerrun) -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 ~$ dockerrun -it ruby irb(main):001:0> puts “Hello World” irb(main):002:0> exitTransformando a imagem em container
  • 24.
    Definindo recursos Não percarecursos para o processo. Java cof cof... ~$ docker run -it -m 300M java
  • 25.
    CPU é balanceamento! Valorpadrão: 1024 Menor: Menor prioridade Maior: Maior prioridade
  • 26.
  • 27.
    Continuando ● O runtransforma 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? ● Casoqueira “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 paraexecutar outra coisa? ~$ docker start <nome do container> ~$ docker exec -it ruby /bin/bash
  • 31.
    Outras Ferramentas ● DockerCLI: ● Docker Machine: ● Docker SWARM: ● Docker Compose: ● Rancher: ● Kitematic:
  • 32.
    Onde aprender mais? ●https://github.com/gomex/docker-para-desenvolvedores ● http://techfree.com.br/
  • 33.