2. Rafael Chiavegatto
Rafael Chiavegatto possui pós-graduação em Engenharia de
Software formado pela FUCAPI em 2013 e graduado em Sistema
de Informação pela Universidade Salgado de Oliveira /UNIVERSO-
JF. Possui mais de 8 anos de experiência na área de
desenvolvimento de software. Conhecimento e utilização em
práticas de desenvolvimento ágeis, automação de testes(Web/
Mobile), testes de performance, testes de segurança, ferramentas
para automação de builds, entrega contínua e cultura DEVOPS.
Contatos:
Blog : rafaelchiavegatto.com.br
E-mail: chiavegattor@gmail.com
Twiter: twitter.com/FaelChiavegatto
Linkedin: linkedin.com/in/rafael-chiavegatto-3a599326
3. • Docker - Visão Geral, Conceitos, Vantagens e Benefícios;
• Instalação;
• Pull e Push de imagens;
• Comandos básicos;
• Exportação e importação de imagens;
• Criação de imagens;
• Criação de volumes;
• Docker-Compose;
Agenda
5. O que é Docker?
É uma plataforma Open Source que
facilita a criação e administração de
ambientes isolados. . Ele possibilita o
empacotamento de uma aplicação ou
ambiente dentro de um container.
6. Máquina virtual x Containers
Fonte: https://www.docker.com/what-docker
7. Cada máquina virtual possui:
• A aplicação e suas dependências;
• Um sistema operacional;
• Usuários do sistema operacional.
Máquina virtual
8. • Containers são mais leves, já que não
precisam de um ambiente virtual
completo;
• O kernel do host proporciona
gerenciamento de memória, I/O, CPU,
etc;
• Inicialização pode levar poucos segundos.
Container
16. Vamos fazer o seguinte:
Abrir o terminal (ctrl + shift + t);
Digitar o comando:
docker image pull ubuntu
Executar o comando
docker images
OBS.: No Window iniciar o Docker e abrir o CMD.
Prática - Imagens Pull
21. Containers possuem:
• Isolamento de recursos, semelhantes
como máquinas virtuais;
• Abordagem de arquitetura diferente
que permite ser mais portátil e
eficiente;
• São executados como um processo
isolado;
Containers
22. • Execução controlada de CPU, RAM, I/O,
etc;
• Podem ser descartáveis ou persistentes;
• Não estão vinculados a qualquer
infraestrutura específica;
• Compartilham o kernel com outros
containers.
Containers
23. Instância de uma imagemFonte: https://blog.schoolofnet.com/2018/05/para-que-serve-o-docker/
25. • Vamos fazer o seguinte:
Abrir o terminal (ctrl + shift + t);
• Digitar o comando:
docker image pull ubuntu
• Executar o comando
docker container run -it ubuntu
• Verificar a versão e data da máquina:
• cat /etc/*-release
• date
Prática containers - Run -it
32. • Importar a imagem do apache ou realizar o
pull da imagem;
• Criar um container do apache
docker container run -d httpd:alpine
• Executar o comando:
docker container inspect idDoContainer
• Achar as seguintes informações:
• IP;
• Portas;
• Mac Address.
Prática - Containers Inspect
33. • Acessar o container:
docker container exec -it nomeDocontainer(ou
id) /bin/sh ou bash
• Verificar a versão e data do container:
• cat /etc/*-release
• date
Prática - Containers Exec
37. • Melhorar o nome ao criar um container
docker container run -d - -name apache
httpd:alpine
• Executar o comando
docker container ps
Prática - Containers --name
38. • Remover todos os containers
docker container rm -f $(docker container ps -aq)
• Executar o comando para ver se existe containers
ativos:
docker container ps
• Executar o comando para listar todos os
containers
docker container ps -a
Prática - Containers Remove All
39. • Importar a imagem do Apache
• Criar o container
docker container run -d --name apache
-p 80:80 httpd:alpine
• Executar o comando para listar os containers
docker container ps
• Acessar o navegador na url:
http://localhost
Prática - Containers Binding Ports
40. • Criar o container
docker container run -d --name apache
-p 4000:80 httpd:alpine
• Executar o comando para listar os containers
docker container ps
• Acessar o navegador na url:
http://localhost:4000
Prática - Containers Binding Ports
41. • Um volume pode ser um diretório localizado
fora de um container;
• Podemos manipular dados no container, sem
alterar a imagem;
• Um volume pode ser compartilhado entre
vários containers;
• Toda alteração feita em um volume é de
forma direta.
Volumes
42. • Criar o volume:
docker run -d -p 80:80 -v static:/usr/local/apache2/htdocs/
httpd:alpine
• Executar o comando:
echo "Eu sei usar volume" > static/index.html
• Acessar o navegador
http://localhost
Prática - Containers Volumes
43. • Remover todos os containers:
docker container rm –f $(docker container ps -aq)
• Criar um container do ubuntu-unity-novnc :
docker container run -d -p 6080:6080 --name vnc -e
PASSWORD=123456 -e SUDO=yes chenjr0719/ubuntu-unity-novnc
• Acessar no navegador o endereço:
• http://localhost:6080/vnc.html;
• Acessar o VNC com a senha que criamos.
Prática – Containers Environment
45. • Remover todos os containers:
docker container rm –f $(docker container ps –aq)
• Criar um container do ubuntu-unity-novnc :
docker container run -d -p 6080:6080 --name vnc -e
PASSWORD=123456 -e SUDO=yes chenjr0719/ubuntu-unity-novnc
• Acessar no navegador o endereço:
• http://localhost:6080/vnc.html;
• Acessar o VNC com a senha que criamos;
• Criar uma pasta com seu nome no home do usuário.
• Executar o comando:
docker container cp vnc :/home/ubuntu/pastacriada .(local que
será salvo a pasta)
Prática – Containers CP
47. • São scripts contendo comandos que
devem ser executados para formar
uma nova imagem;
• Cada comando executado gera uma
nova camada;
• Quando um Dockerfile conclui a
execução, você gera uma nova
imagem.
Dockerfiles
49. Vamos por partes:
• FROM – estamos escolhendo a imagem base para
criar o container;
• RUN – permite a execução de um comando no
container;
• COPY - Copia dados para dentro do container;
• EXPOSE – faz o mapeamento da porta em um
container;
• CMD – executa um comando ao iniciar o container;
Dockerfiles
51. • Vamos criar um arquivo chamado Dockerfile, para isso
em uma pasta usar o comando:
touch Dockerfile
• Abrir o arquivo e colocar a seguinte instruções:
FROM ubuntu
RUN apt-get update
RUN apt-get install -y nginx
• Executar o comando:
docker image build –t usuarioDockerHub/nginx .
Prática - Dockerfile Build
52. • Alterar o arquivo Dockerfile:
FROM ubuntu
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80
• Executar o comando:
docker image build –t usuarioDockerHub/ngnix .
Foi utilizado cache da parte que já existia na imagem, e executou
apenas a exposição da porta.
Prática - Dockerfile Cache
53. • Criar um container com a imagem criada:
docker container run –d –p 80:80 - -name nginx
usuarioDockerHub/nginx /usr/sbin/nginx -g "daemon
off;”
• Acessar no navegador:
http://localhost
• Executar o comando:
docker container port name/idContainer
Prática - Dockerfile Run
54. • Alterar o arquivo Dockerfile:
FROM ubuntu
RUN apt-get update
RUN apt-get install -y nginx
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE 80
CMD service nginx start
• Executar o comando:
docker image build –t usuarioDockerHub/ngnix .
Prática - Dockerfile CMD
55. • Executar o comando:
docker volume ls
• Alterar o arquivo Dockerfile:
FROM ubuntu
RUN apt-get update && apt-get install -y
nginx &&
echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE 80
WORKDIR /usr/share/nginx/html
CMD service nginx start
• Executar o comando:
docker image build -t usuarioDockerHub/ngnix .
Prática - Dockerfile Workdir
56. • Executar o comando:
docker container run -d -p 80:80 - -name nginx
nomeDoUsuarioDockerHub/nginx
• Verificar novamente os volumes:
docker container exec -it nginx bash
Prática - Container Workdir
57. • Logar no dockerhub:
docker login (informar login, senha)
• Subir a imagem para o dockerhub
docker image push usuarioDockerHub/nginx
Prática - Dockerfile Push
60. Docker Compose
É uma ferramenta que permite criar e
executar aplicações que dependam de
vários serviços diferentes, rodando os
mesmos em containers separados.