Curso de Curso Completo de Docker | Conteinerizado sua aplicação
Categorias
📺 Assista ao curso completo no YouTube antes de fazer a prova
Informações do Curso
Carga Horária
1h
Nota Mínima para Aprovação
60%
Docker é uma plataforma que permite criar, gerenciar e executar aplicações dentro de containers, garantindo que o ambiente de execução seja o mesmo em todas as etapas do ciclo de desenvolvimento, da máquina local até o ambiente de produção. No contexto de deploy, o uso de Docker facilita a criação de imagens leves e portáteis, que incluem todas as dependências da aplicação, reduzindo problemas relacionados a diferenças de configuração entre ambientes. Isso possibilita que o processo de deploy seja mais eficiente, automatizado e escalável, especialmente em arquiteturas modernas baseadas em microserviços. Nesse tutorial completo com deploy nós vamos explorar tudo que você precisa saber para começar a usar o Docker. Nós vamos aprender alguns comandos essenciais do Docker, como pull, push start stop entre vários outros. Nós vamos também criar o Dockerfile para uma aplicação Java e entender o problema que pode acontecer ao gerar uma imagem em uma arquitetura de processador (como a dos Macs, a M1) diferente da arquitetura em que essa imagem irá executar (no nosso caso um Ubuntu amd64). Por fim, vamos usar uma VPS para fazer o deploy desse container Docker na nuvem. Para que você aprenda docker do zero, assista o vídeo até o final.
Conteúdo do curso
Intro
O que é o Docker
Conceitos base do Docker
Entendendo separação da interface de rede
Mapeando portas do Docker para a Máquina host
Configurando a máquina do deploy
Criando imagens específicas por arquitetura
Deploy da imagem Docker na VPS
Faça login e adquira créditos para se inscrever e fazer a prova
Material complementar
Docker
Docker é uma plataforma de virtualização de containers que permite empacotar, distribuir e executar aplicações de forma isolada e consistente. Diferente das máquinas virtuais tradicionais, containers Docker compartilham o kernel do sistema operacional host, tornando-os mais leves e eficientes.
Principais benefícios do Docker
- Isolamento: Cada container roda de forma isolada, com seus próprios processos, redes e sistemas de arquivos
- Portabilidade: "Build once, run anywhere" - containers podem ser executados em qualquer ambiente que tenha Docker instalado
- Eficiência: Containers são mais leves que VMs tradicionais e iniciam mais rapidamente
- Escalabilidade: Facilita a criação e gerenciamento de múltiplas instâncias da aplicação
Dockerfile
Dockerfile é um arquivo de texto que contém todas as instruções necessárias para criar uma imagem Docker.
- A imagem base a ser utilizada
- Comandos a serem executados durante a construção
- Arquivos a serem copiados para dentro da imagem
- Portas a serem expostas
- Comando padrão a ser executado quando o container iniciar
Aqui o código:
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Principais comandos do Docker
Aqui estão os comandos mais utilizados no dia a dia com Docker:
Gerenciamento de Imagens
docker build .- Constrói uma imagem a partir de um Dockerfiledocker pull [imagem]- Baixa uma imagem do Docker Hubdocker images- Lista todas as imagens locaisdocker rmi [imagem]- Remove uma imagem específica
Gerenciamento de Containers
docker run [imagem]- Cria e inicia um novo containerdocker ps- Lista containers em execuçãodocker ps -a- Lista todos os containers (incluindo parados)docker start [container]- Inicia um container existentedocker stop [container]- Para um container em execuçãodocker rm [container]- Remove um container
Logs e Debugging
docker logs [container]- Exibe logs do containerdocker exec -it [container] bash- Acessa o terminal do container
Opções comuns do docker run
-d- Executa em modo detached (background)-p [host-port]:[container-port]- Mapeia portas-v [host-path]:[container-path]- Monta volumes--name [nome]- Define um nome para o container-t- Define uma tag/nome para a imagem durante o build ou execução
Dockerhub
https://hub.docker.com/search?badges=official
O Docker Hub é o registro público oficial de imagens Docker - um repositório centralizado onde você pode encontrar, compartilhar e distribuir imagens Docker. Funciona de forma similar ao GitHub, mas para imagens Docker.
- Repositório oficial de imagens base e populares
- Possibilidade de criar repositórios públicos e privados
- Integração com sistemas de CI/CD
- Controle de versões de imagens através de tags
Como publicar imagens no Docker Hub
Para publicar suas próprias imagens no Docker Hub, siga estes passos:
- Crie uma conta no Docker Hub (hub.docker.com)
- Faça login via terminal:
docker login - Tagueie sua imagem:
docker tag local-image:tag username/repository:tag - Envie a imagem:
docker pushusername/repository:tag
docker build -t minha-app .
docker tag minha-app fernandakipper/minha-app:1.0
docker push fernandakipper/minha-app:1.0
Após o push, sua imagem estará disponível no Docker Hub e poderá ser baixada por outros usuários usando o comando docker pull username/repository:tag.
Docker Compose
Docker Compose é uma ferramenta para orquestrar aplicações multi-containers, permitindo definir e executar múltiplos containers Docker de forma declarativa através de um único arquivo YAML. Com ele, você pode configurar todos os serviços, redes e volumes necessários para sua aplicação em um único lugar, facilitando o gerenciamento e deploy de aplicações complexas
services:
# Aqui a gente bota o nome do serviço (como ele vai aparecer la no terminal depois)
backend:
# Caminho para o dockerfile desse serviço
build: ./nodejs-ping-pong
# Define o mapeamento de portas que vamos fazer
ports:
- "3000:3000"
# Qual o nome da rede que vamos usar
networks:
- app-network
frontend:
build: ./frontend
ports:
- "4200:4200"
networks:
- app-network
# Aqui definimos a rede que vamos usar
networks:
# Chamando ela de app-network
app-network:
driver: bridge
Networks
No Docker Compose, as networks (redes) são mecanismos que permitem que containers se comuniquem entre si. Quando você coloca dois ou mais containers na mesma rede:
- Os containers podem se comunicar diretamente usando o nome do serviço como hostname
- Eles ficam isolados de containers que estão em outras redes
- A comunicação entre eles é mais segura e eficiente
Por exemplo, no arquivo docker-compose.yml acima, tanto o frontend quanto o backend estão na rede 'app-network'. Isso significa que:
- O frontend pode fazer requisições para o backend usando simplesmente "http://backend:3000"
- A comunicação entre eles é isolada de outros containers que não estão nessa rede
- Não é necessário expor portas internamente entre os serviços da mesma rede
O driver 'bridge' é o tipo de rede padrão do Docker, criando uma rede virtual isolada para comunicação entre containers.
Principais comandos
docker-compose up- Inicia todos os serviços definidos no arquivo docker-compose.ymldocker-compose up --build- Força o rebuild das imagens antes de iniciar os serviçosdocker-compose down- Para e remove todos os containers, redes e volumes definidosdocker-compose ps- Lista todos os containers em execução do composedocker-compose logs- Exibe os logs de todos os serviçosdocker-compose logs [serviço]- Exibe os logs de um serviço específicodocker-compose stop- Para todos os serviços sem remover os containersdocker-compose start- Inicia serviços que foram paradosdocker-compose restart- Reinicia todos os serviçosdocker-compose exec [serviço] [comando]- Executa um comando em um serviço específicodocker-compose run [serviço] bash- Acessa o terminal bash de um serviço específico
Flags comuns:
-
-d- Executa em modo detached (background) -
--build- Força o rebuild das imagensQuando você executa o
docker-compose buildou usa a flag--build, o Docker Compose irá construir todas as imagens definidas no arquivo docker-compose.yml que têm a instrução 'build' especificada. É similar ao comandodocker build, mas com algumas diferenças importantes:- O Docker Compose automaticamente constrói todas as imagens necessárias em um único comando
- Ele mantém um cache das imagens construídas e só reconstrói o que foi modificado
- O contexto de build é definido no docker-compose.yml, não sendo necessário especificar o caminho do Dockerfile manualmente
Por exemplo, no nosso docker-compose.yml acima, quando executamos
docker-compose up --build, ele irá construir automaticamente as imagens tanto do backend quanto do frontend, usando os Dockerfiles especificados em seus respectivos diretórios. -
--force-recreate- Força a recriação dos containers -
-f- Especifica um arquivo compose alternativo
Adicionando comandos na inicialização
No Docker Compose, existem várias maneiras de executar comandos durante a inicialização de um container. As principais são:
1. Usando o comando command
O comando 'command' substitui o CMD definido no Dockerfile:
services:
app:
build: .
command: ["npm", "run", "dev"]
2. Usando entrypoint
O 'entrypoint' permite definir um script que será executado quando o container iniciar:
services:
app:
build: .
entrypoint: ["./init-script.sh"]
3. Usando scripts de inicialização
Você pode criar um script shell e configurá-lo como entrypoint:
#!/bin/bash
# init-script.sh
npm install
npm run migrations
npm start
E no docker-compose.yml:
services:
app:
build: .
entrypoint: ["./init-script.sh"]
volumes:
- ./init-script.sh:/init-script.sh
4. Usando depends_on com condition
Para garantir que serviços iniciem em uma ordem específica:
services:
app:
build: .
depends_on:
db:
condition: service_healthy
command: ["npm", "start"]
db:
image: postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
Sobre este Curso Gratuito de Curso Completo de Docker | Conteinerizado sua aplicação
Este curso de Curso Completo de Docker | Conteinerizado sua aplicação é oferecido gratuitamente pela Kipper Dev, fundada por Fernanda Kipper. O objetivo é democratizar o acesso ao conhecimento de programação e desenvolvimento, permitindo que qualquer pessoa aprenda sem custos.
Após assistir ao curso completo no YouTube, você pode validar seu conhecimento através de uma prova rigorosa. Ao ser aprovado com nota mínima de 60%, você receberá um certificado válido que pode ser usado como horas complementares em universidades brasileiras.
O certificado é emitido pela KipperDev Marketing e Treinamentos e possui uma chave de validação única que permite verificar sua autenticidade a qualquer momento.