Logo Passei Direto
Buscar

Introdução ao docker pt.1

User badge image

Enviado por Bruno teste em

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Banco de dados NoSQL - Introdução ao Docker
Prof. Gustavo Leitão
Docker é uma tecnologia de software que fornece contêineres, que fornece uma camada adicional de 
abstração e automação de virtualização de nível de sistema operacional no Windows e no Linux. 
O Docker usa as características de isolamento de recurso do núcleo do 
Linux como cgroups e espaços de nomes do núcleo, e um sistema de arquivos com recursos de união, 
como OverlayFS e outros  para permitir "contêineres" independentes para executar dentro de uma 
única instância Linux, evitando a sobrecarga de iniciar e manter máquinas virtuais (VMs).
https://pt.wikipedia.org/wiki/Container_(tipo_de_dado_abstrato)
https://pt.wikipedia.org/w/index.php?title=Virtualiza%C3%A7%C3%A3o_de_n%C3%ADvel_de_sistema_operacional&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Windows
https://pt.wikipedia.org/wiki/Linux
https://pt.wikipedia.org/wiki/N%C3%BAcleo_do_Linux
https://pt.wikipedia.org/wiki/N%C3%BAcleo_do_Linux
https://pt.wikipedia.org/w/index.php?title=Cgroups&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Espa%C3%A7os_de_nomes_do_Linux&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=Montagem_de_uni%C3%A3o&action=edit&redlink=1
https://pt.wikipedia.org/w/index.php?title=OverlayFS&action=edit&redlink=1
https://pt.wikipedia.org/wiki/Docker_(software)#cite_note-3
https://pt.wikipedia.org/wiki/M%C3%A1quina_virtual
Aplicação
Sistema Operacional
Hardware
• Lentidão para deploy
• Altos custos
• Desperdício de recursos
• Dificuldade para escalar
• Dificuldade para migrar
• Forte dependência do ambiente.
Uma aplicação em um servidor físico
SO Host
Hardware
• Melhor gestão dos recursos
• Mais fácil para escalar
• Cada VM requerer pré-alocação de 
hardware
• Cada VM precisa de um SO.
• Um SO por Vm implica em desperdício 
de recursos
• Portabilidade da aplicação não é 
garantido
Um servidor físico para múltiplas aplicações
Hypervisor
SO
App
SO
App
SO Host
Hardware
• Maior velocidade de boot, pois não 
existe um SO para iniciar
• Menor dependência (maior 
facilidade em mudar entre 
diferentes infraestruturas)
• Maior eficiência: menor uso do OS.
Com Containers
Docker
Bin/lib
App
Bin/lib
App
Container são construídos 
em nível de aplicação
VMs são componentes em 
nível de infraestrutura.
Imagem: A base de um container. Artefato que contém tudo 
necessários para execução da aplicação.
Container: Imagem em execução. 
Registry: Armazena, distribui e gerencia imagens Docker.
Volumes: Área de armazenamento de dados de um Container
Network: Rede que conecta os Containers
Docker Hub: Registry público de imagens Docker
$ docker images
Lista imagens disponíveis localmente
$ docker ps
Lista Containers em execução
$ docker ps -a
Lista todos os Containers
$ docker run #nome-imagem:tag
Executa uma imagem (criando novo container)
$ docker run hello-world
Executando primeira imagem
Caso não seja encontrado a imagem localmente, o Docker tentará 
realizar download da imagem no registro público.
Como criar uma imagem?!
1. Cria um arquivo Dockerfile com descrição para sua aplicação
2. Criar uma imagem através do comando docker build
const express = require('express') 
const app = express() 
const port = 3000 
app.get('/', (req, res) => res.send('Hello World!')) 
app.listen(port, () => console.log(`Example app listening on port $
{port}!`)) 
Crie o código de sua aplicação (app.js)
Crie o código de sua aplicação (package.json)
{ 
 "name": "nodejs-image-demo", 
 "version": "1.0.0", 
 "description": "nodejs image demo", 
 "author": "Gustavo Leitão <gustavo.leitao@imd.ufrn.br>", 
 "main": "app.js", 
 "dependencies": { 
 "express": "^4.16.4" 
 } 
} 
Crie o Dockerfile
FROM node:10 
WORKDIR /usr/src/app 
COPY package*.json ./ 
RUN npm install 
COPY . /usr/src/app 
EXPOSE 3000 
CMD [ "node", "/usr/src/app/app.js" ] 
$ docker build node-sample:tag .
Crie a imagem
Execute a imagem em detach e com mapeamento de portas
$ docker run -p 8080:3000 -d nome-sample:tag
-p vai mapear a porta local 8080 na porta interna do contaminar 3000
-d vai executar o container em background
$ docker start #container id | #container name
Iniciando um container existente
Parando um container em execução
$ docker stop #container id | #container name
$ docker rm #container id | #container name
Removendo um container
Removendo uma imagem
docker rmi #image id:tag
$ docker exec -it #container_name #comando
Executando um comando dentro do Container
Exemplo:
docker exec -it node-sample bash 
Executa bash no container de nome “node-sample” 
-i: significa interativo
-t: Alocação de um pseudo-tty
Obrigado!
Prof. Gustavo Leitão