Este documento apresenta uma introdução ao Docker, incluindo sua arquitetura, comunidade, usos comuns e comandos básicos. O Docker permite isolar e empacotar aplicações em containers leves para facilitar a portabilidade e padronização do desenvolvimento. Exemplos demonstram como executar containers de Ruby e definir recursos como memória e CPU.
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?
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
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;
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
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