ANÚNCIO

APRENDA DOCKER DO ZERO | TUTORIAL COMPLETO COM DEPLOY

Aprenda Docker do zero com este tutorial completo: containers, Dockerfile, deploy em VPS e configuração de arquiteturas.

⏱ 44min 👁 350.043 visualizações 📅 abril 19, 2024

Mais aulas deste curso

Curso de Docker e Docker Compose Grátis

Aula 1 de 5

Resumo

O que é Docker e por que importa

Docker é uma plataforma de containerização que revolucionou a forma como desenvolvemos, distribuímos e executamos aplicações. Ele resolve um problema clássico da engenharia de software: garantir que uma aplicação funcione identicamente em diferentes ambientes, seja na máquina local do desenvolvedor, em um servidor de teste ou em produção na nuvem. Docker empacota a aplicação junto com todas as suas dependências, bibliotecas e configurações em uma unidade chamada container, eliminando a necessidade de se preocupar com diferenças de sistema operacional, versões de linguagens ou bibliotecas faltantes. Para quem trabalha com deploy e infraestrutura, Docker oferece uma solução elegante e eficiente que torna o processo de publicação de aplicações mais automatizado, escalável e confiável, especialmente em ambientes modernos baseados em microserviços.

Fundamentos essenciais de containers

Antes de mergulhar em comandos práticos, é fundamental compreender o conceito de container. Um container é uma instância em execução de uma imagem Docker, assim como objetos em programação orientada a objetos são instâncias de classes. A imagem é o template, o blueprint que define exatamente como o container deve ser construído e executado. Quando você cria uma imagem Docker, está definindo todas as dependências, variáveis de ambiente, portas expostas e comandos que serão executados quando o container iniciar. Os containers são isolados entre si e do sistema host, o que significa que cada container tem seu próprio sistema de arquivos, rede e processos. Esse isolamento é crucial para segurança, previsibilidade e para permitir que múltiplos containers rodem no mesmo servidor sem interferência.

Comandos Docker essenciais na prática

O tutorial apresenta os comandos mais fundamentais que todo desenvolvedor precisa dominar. O comando docker pull baixa uma imagem do Docker Hub ou de outro registro, trazendo para a máquina local um template pronto para usar. Docker push envia uma imagem criada localmente para um registro, tornando-a disponível para outros ambientes ou equipes. Docker start inicia um container que foi parado, enquanto docker stop interrompe um container em execução de forma elegante. Além desses, existem comandos como docker run que cria e executa um container em uma única operação, docker build que constrói uma imagem a partir de um Dockerfile, e docker ps que lista containers em execução. Compreender quando e como usar cada comando é essencial para um workflow eficiente com Docker.

Criando imagens com Dockerfile

O Dockerfile é um arquivo de configuração que contém instruções para construir uma imagem Docker. Ele utiliza uma sintaxe simples mas poderosa para definir cada camada da imagem, começando tipicamente com a escolha de uma imagem base (como uma distribuição Linux específica ou uma imagem que já contém Java instalado). Cada instrução no Dockerfile cria uma nova camada na imagem, e Docker reutiliza essas camadas em cache quando possível, acelerando builds subsequentes. No tutorial, o exemplo prático utiliza Java, demonstrando como específicar a imagem base Java, copiar o código-fonte, instalar dependências e definir o comando de inicialização. A construção cuidadosa de um Dockerfile é crucial para produzir imagens eficientes em tamanho e seguras em práticas.

Desafios de compatibilidade de arquitetura

Um aspecto crítico abordado no tutorial é o problema de compatibilidade entre diferentes arquiteturas de processador. Muitos desenvolvedores utilizam computadores com processadores M1 (arquitetura ARM), enquanto servidores em produção frequentemente rodam em arquiteturas amd64 (Intel/AMD). Quando você constrói uma imagem Docker em um Mac M1, ela é otimizada para essa arquitetura ARM específica. Se tentar executar essa mesma imagem em um servidor Ubuntu amd64, enfrentará erros de compatibilidade de binários. Para resolver isso, é possível usar flags como --platform no Docker build para específicar a arquitetura alvo, ou usar ferramentas como buildx que permitem criar imagens multi-arquitetura. Compreender esses detalhes técnicos evita frustrações e erros em produção que poderiam levar horas para diagnosticar.

Rede e mapeamento de portas

Os containers Docker têm seu próprio sistema de rede isolado, o que significa que portas dentro do container não são diretamente acessíveis da máquina host por padrão. Para permitir que o mundo externo acesse uma aplicação rodando em um container, é necessário mapear portas. Quando você executa um container com a flag -p 8080:8080, está dizendo que a porta 8080 da máquina host seja redirecionada para a porta 8080 do container. Isso permite que requisições chegando na máquina host sejam encaminhadas para a aplicação dentro do container. O tutorial explora como funciona essa separação de rede e por que ela é importante para segurança e organização. Compreender mapeamento de portas é essencial para debugar problemas de conectividade e para publicar aplicações web que precisam ser acessíveis pela internet.

Preparação e execução do deploy em VPS

O passo final do tutorial envolve a prática real de deploy utilizando uma VPS (Virtual Private Server). Antes de fazer deploy, é necessário preparar a máquina remota instalando Docker e configurando as credenciais necessárias para acessar registros de imagem, caso use imagens privadas. O processo típico envolve enviar a imagem Docker para um registro (como Docker Hub ou um registro privado), depois acessar a VPS via SSH, fazer pull da imagem e executar um container com ela. O tutorial usa a Hostinger como provedor de VPS exemplo, mostrando os passos práticos de configuração. Realizar deploy dessa forma garante que a mesma imagem que foi testada localmente seja executada idêntica em produção, eliminando uma classe inteira de bugs relacionados a diferenças de ambiente.

Próximos passos em containerização

Docker é apenas o primeiro passo em uma jornada de modernização de infraestrutura. Após dominar os fundamentos, desenvolvedores geralmente exploram orquestração de containers com Kubernetes, que gerencia múltiplos containers em um cluster de máquinas. Docker Compose permite definir aplicações multi-container complexas em um único arquivo YAML, facilitando ambientes de desenvolvimento que replicam a produção. Também é valioso aprender sobre boas práticas de segurança com Docker, como executar containers com privilégios limitados, usar imagens oficiais confiáveis e escanear imagens para vulnerabilidades. Monitoramento e logging de containers também se tornam importantes em ambientes de produção. O conhecimento consolidado neste tutorial serve como base sólida para explorar essas tecnologias complementares.

O que você vai aprender

  • Compreender o conceito de containers e imagens Docker
  • Executar comandos essenciais como pull, push, start, stop e run
  • Criar um Dockerfile para empacotar uma aplicação Java
  • Resolver problemas de compatibilidade entre arquiteturas de processador
  • Mapear portas entre container e máquina host
  • Realizar deploy de containers em uma VPS na nuvem

Conceitos abordados

Tecnologias utilizadas

Capítulos 10 marcações

  1. Introdução
  2. Entendendo o Docker
  3. Conceitos do Docker
  4. Aprofundando conceitos
  5. Separação de rede
  6. Mapeamento de portas
  7. Preparando a VPS
  8. Imagens por arquitetura
  9. Deploy na VPS
  10. Próximos passos

Próximo vídeo sugerido

Avaliações

Avaliação dos alunos 0.0
0 avaliações
Avalie esta aula

Ajude outros alunos a entenderem se esta aula foi útil.

Ainda não há avaliações. Seja o primeiro a avaliar esta aula.