Containerizacao Docker: guia completo para iniciantes
Containerizacao Docker permite empacotar aplicacoes com suas dependencias em ambientes isolados. Este guia mostra como instalar, criar e gerenciar containers do zero.
Containerizacao Docker permite empacotar aplicacoes com suas dependencias em ambientes isolados. Este guia mostra como instalar, criar e gerenciar containers do zero.
Containerizacao com Docker transformou a forma como desenvolvedores empacotam, distribuem e executam aplicacoes. Diferente de maquinas virtuais que emulam hardware completo, containers compartilham o kernel do sistema operacional hospedeiro, o que reduz consumo de recursos e acelera a implantacao. Este guia mostra o passo a passo para comecar com Docker, desde a instalacao ate a execucao de aplicacoes em containers.
Passo 1: Instalar o Docker
O primeiro passo e instalar o Docker Engine no seu sistema. O processo varia conforme o sistema operacional:
- Windows e macOS: baixe o Docker Desktop do site oficial (docker.com/products/docker-desktop). A instalacao inclui o Docker Engine, CLI e interface grafica.
- Linux (Ubuntu/Debian): use o gerenciador de pacotes. Execute
sudo apt update && sudo apt install docker.ioe depoissudo systemctl start docker. - Linux (Fedora/CentOS):
sudo dnf install dockeresudo systemctl start docker.
Apos a instalacao, verifique com docker --version. Se o comando retornar a versao, a instalacao funcionou.
Dica: no Linux, para evitar usar sudo em todos os comandos, adicione seu usuario ao grupo docker: sudo usermod -aG docker $USER e saia da sessao para aplicar.
Erro comum: esquecer de iniciar o servico do Docker. No Linux, se o comando docker ps retornar "Cannot connect to the Docker daemon", execute sudo systemctl start docker.
Passo 2: Entender os conceitos basicos
Antes de criar containers, e util entender tres conceitos centrais:
- Imagem: um template imutavel com o sistema operacional, codigo e dependencias. Exemplo:
ubuntu:22.04. - Container: uma instancia executavel de uma imagem. Voce pode criar varios containers a partir da mesma imagem.
- Dockerfile: um arquivo de texto com instrucoes para construir uma imagem personalizada.
Diferenca chave: imagem e o "molde", container e o "bolo" executando.
Dica: imagens sao armazenadas em registries, como o Docker Hub. O comando docker pull ubuntu baixa a imagem Ubuntu oficial.
Erro comum: confundir imagem com container. Uma imagem nao executa processos; ela so existe como arquivo. O container que executa.
Passo 3: Executar seu primeiro container
Com o Docker instalado, execute um container simples para testar:
docker run hello-world
O Docker baixara a imagem hello-world e executara um container que imprime uma mensagem de confirmacao. Se funcionar, voce esta pronto.
Para um exemplo mais util, execute um container com Ubuntu:
docker run -it ubuntu bash
Isso inicia um container interativo com terminal bash. Voce pode executar comandos dentro do container. Para sair, digite exit.
Dica: use docker ps para listar containers em execucao. Use docker ps -a para listar todos, inclusive os parados.
Erro comum: nao usar a flag -it para containers interativos. Sem ela, o container inicia e para imediatamente, sem permitir interacao.
Passo 4: Gerenciar containers e imagens
Apos executar alguns containers, aprenda a gerenciar os recursos:
- Listar imagens baixadas:
docker images - Remover uma imagem:
docker rmi <nome-da-imagem> - Parar um container:
docker stop <id-ou-nome> - Remover um container:
docker rm <id-ou-nome> - Remover containers parados:
docker container prune
Para nomear um container ao cria-lo, use --name:
docker run --name meu-ubuntu -it ubuntu bash
Isso facilita identificar e gerenciar containers.
Dica: use docker system prune para limpar imagens, containers e volumes nao utilizados de uma vez. Cuidado: isso remove tudo que nao esta em uso.
Erro comum: acumular containers parados. Eles ocupam espaco em disco. Periodicamente, execute docker container prune.
Passo 5: Criar uma imagem personalizada com Dockerfile
Para empacotar sua propria aplicacao, crie um Dockerfile. Exemplo simples para uma aplicacao Node.js:
FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["node", "index.js"]
Construa a imagem com:
docker build -t minha-app .
Execute o container:
docker run -p 3000:3000 minha-app
A flag -p mapeia a porta 3000 do container para a porta 3000 do host.
Dica: use imagens base leves como alpine para reduzir o tamanho da imagem final. Uma imagem Node.js com Alpine tem cerca de 120 MB, contra 900 MB da versao completa.
Erro comum: esquecer o ponto final no comando docker build. O ponto indica o diretorio de contexto (onde esta o Dockerfile). Sem ele, o build falha.
Checklist do que voce aprendeu
- [ ] Instalou o Docker Engine
- [ ] Entendeu a diferenca entre imagem e container
- [ ] Executou containers com
docker run - [ ] Gerenciou containers com
docker ps,docker stop,docker rm - [ ] Criou uma imagem personalizada com Dockerfile
Perguntas frequentes sobre containerizacao Docker
Qual a diferenca entre Docker e maquina virtual?
Docker containers compartilham o kernel do sistema operacional hospedeiro, enquanto maquinas virtuais emulam hardware completo com seu proprio sistema operacional. Containers sao mais leves, iniciam em segundos e consomem menos recursos. Maquinas virtuais oferecem isolamento mais forte, mas com maior custo de desempenho.
Preciso saber Linux para usar Docker?
Nao e obrigatorio, mas ajuda. A maioria dos comandos Docker e executada no terminal, e muitos containers usam Linux como sistema base. O Docker Desktop para Windows e macOS abstrai parte da complexidade, mas conhecer comandos basicos de terminal facilita o aprendizado.
O que e Docker Compose?
Docker Compose e uma ferramenta para definir e executar aplicacoes multicontainer. Com um arquivo YAML, voce configura servicos, redes e volumes. Um comando (docker-compose up) inicia todos os containers definidos. E util para aplicacoes que dependem de banco de dados, cache e outros servicos.
Como persistir dados em containers?
Containers sao efemeros: dados sao perdidos ao remove-los. Para persistir, use volumes. Crie um volume com docker volume create meu-volume e monte-o no container com -v meu-volume:/caminho/no/container. Dados permanecem mesmo apos o container ser removido.
Docker e seguro?
Docker oferece isolamento por meio de namespaces e cgroups do Linux, mas nao e tao seguro quanto maquinas virtuais. Containers compartilham o kernel, entao uma vulnerabilidade no kernel pode afetar todos os containers. Para ambientes de producao, evite rodar containers como root e mantenha imagens atualizadas.
Qual a melhor forma de aprender Docker?
Pratique com projetos reais. Comece containerizando uma aplicacao simples (um site estatico ou API). Depois, avance para Docker Compose e orquestracao com Kubernetes. A documentacao oficial (docs.docker.com) e o playground gratuito Play with Docker sao recursos uteis.