Você já ouviu “funciona na minha máquina” e precisou resolver por horas um problema que não existia no seu ambiente local? O Docker foi criado exatamente para eliminar esse problema. Neste guia, portanto, você vai aprender o que é Docker, como instalar em qualquer sistema operacional e como rodar seu primeiro container com comandos reais, do zero.
O Que É Docker e Por Que Todo Dev Deveria Conhecer
Docker é uma plataforma de conteinerização. Em outras palavras, ele permite empacotar uma aplicação com tudo que ela precisa. container.
Pense assim: se você fosse mudar de cidade, não levaria só as chaves da sua casa nova. Você levaria tudo que precisa para funcionar — móveis, utensílios, roupas. O Docker faz exatamente isso com sua aplicação.
A principal diferença em relação a uma máquina virtual (VM) é que a VM emula um sistema operacional inteiro, enquanto um container compartilha o kernel do host. Por isso, containers são muito mais leves e inicializam em segundos.
Por que isso importa na prática:
- Seu código roda da mesma forma no notebook, no staging e em produção. Além disso, configurar o ambiente de um novo desenvolvedor leva minutos, não horas.
- Configurar o ambiente de um novo desenvolvedor no time leva minutos, não horas.
- Você pode rodar múltiplas versões da mesma tecnologia sem conflito (Node 16 e Node 20, por exemplo).
- Rollback de uma versão defeituosa leva segundos.
No ecossistema DevOps e SRE, Docker é uma habilidade base. Além disso, pipelines de CI/CD, Kubernetes e serviços como AWS ECS e EKS são todos construídos sobre esse conceito. Ou seja, aprender Docker é o primeiro passo para trabalhar com infraestrutura moderna.
Os 4 Conceitos Fundamentais do Docker
Antes de instalar qualquer coisa, vale entender quatro termos que vão aparecer o tempo todo. Em seguida, cada um deles ficará claro na prática.
1. Image (Imagem)
Uma imagem é o “molde” do container. É um pacote imutável que contém o sistema de arquivos e as instruções de como o container deve funcionar. Você não edita uma imagem em execução: você cria uma nova versão.
2. Container
Um container é uma instância em execução de uma imagem. A relação é a mesma de uma classe e um objeto em orientação a objetos: a imagem é a classe, o container é o objeto instanciado.
3. Dockerfile
Um arquivo de texto com instruções para construir uma imagem. É a “receita” de como montar o ambiente da sua aplicação.
4. Registry
O repositório onde imagens ficam armazenadas. O registry público oficial é o Docker Hub, onde você encontra imagens prontas de Nginx, PostgreSQL, Redis, Node.js, e praticamente qualquer tecnologia.
Instalando o Docker na Sua Máquina
A instalação varia por sistema operacional. O processo mais simples em todos os casos é usar o Docker Desktop, o aplicativo oficial da Docker Inc.
Linux
No Ubuntu ou Debian, rode os seguintes comandos no terminal:
# Remover versões antigas (se existirem)
sudo apt remove docker docker-engine docker.io containerd runc
# Instalar dependências
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
# Adicionar a chave GPG oficial do Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Adicionar o repositório
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instalar o Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Após instalar, é necessário adicionar seu usuário ao grupo docker. Dessa forma, você não precisará usar sudo a cada comando.
sudo usermod -aG docker $USER
newgrp docker
MacOS e Windows
Baixe e instale o Docker Desktop diretamente do site oficial: docker.com/products/docker-desktop.
O Docker Desktop inclui tudo: engine, CLI, e uma interface gráfica para gerenciar containers e imagens.
Verificando a Instalação
Após instalar, abra o terminal e rode:
docker --version
# Docker version 27.x.x, build xxxxxxx
docker run hello-world
Se o hello-world rodar com uma mensagem de confirmação, o Docker está funcionando corretamente.
Os Comandos Essenciais do Docker
Com o Docker instalado, você precisa de apenas um punhado de comandos para o dia a dia. A seguir, estão os mais importantes, organizados por função.
Baixar uma imagem
docker pull nginx
Este comando baixa a imagem oficial do Nginx do Docker Hub para sua máquina.
Listar imagens disponíveis localmente
docker images
Rodar um container
docker run nginx
Este comando cria e inicia um container baseado na imagem nginx. Por padrão, o container roda em foreground e prende o terminal. Caso prefira rodar em background (detached mode), basta usar a flag -d:
docker run -d nginx
Listar e gerenciar containers
# Containers em execução
docker ps
# Todos os containers (incluindo parados)
docker ps -a
# Parar e remover
docker stop <container_id>
docker rm <container_id>
O <container_id> aparece na coluna CONTAINER ID do docker ps. Vale lembrar que você não precisa digitar o ID completo — os primeiros 3-4 caracteres já bastam.
Rodando Seu Primeiro Container Útil
Agora que você conhece os comandos básicos, vamos além do hello-world. A seguir, veja como subir um servidor Nginx real e acessá-lo no browser em menos de 1 minuto.
docker run -d -p 8080:80 --name meu-nginx nginx
Quebrando o comando:
| Flag | Significado |
|---|---|
-d | Rodar em background |
-p 8080:80 | Mapear porta 8080 do host para porta 80 do container |
--name meu-nginx | Dar um nome ao container |
nginx | Nome da imagem a usar |
Abra o browser em http://localhost:8080. Você verá a página padrão do Nginx rodando dentro de um container Docker.
Acessar o terminal de um container
docker exec -it meu-nginx bash
A flag -it combina -i (interactive) com -t (TTY), criando uma sessão de terminal interativa dentro do container.
Criando Seu Próprio Dockerfile
Até aqui, usamos apenas imagens prontas do Docker Hub. Agora, porém, vamos criar uma imagem customizada para sua própria aplicação. Para isso, crie um arquivo chamado Dockerfile na raiz do seu projeto Node.js.
# Usar a imagem oficial do Node.js como base
FROM node:20-alpine
# Definir o diretório de trabalho dentro do container
WORKDIR /app
# Copiar os arquivos de dependências primeiro
COPY package*.json ./
# Instalar dependências
RUN npm install
# Copiar o restante do código
COPY . .
# Expor a porta que a aplicação usa
EXPOSE 3000
# Comando para iniciar a aplicação
CMD ["node", "index.js"]
Cada instrução tem uma função específica:
FROM: define a imagem base.node:20-alpineusa Node.js 20 em Alpine Linux, muito mais leve que a versão padrão.WORKDIR: define o diretório de trabalho dentro do container.COPY: copia arquivos do seu sistema para dentro da imagem.RUN: executa comandos durante o build da imagem.EXPOSE: documenta a porta que a aplicação usa.CMD: define o comando padrão ao iniciar o container.
Para construir e rodar:
# Construir a imagem
docker build -t minha-app:v1 .
# Rodar o container
docker run -d -p 3000:3000 minha-app:v1
🚀 Próximos passos:
Você já domina os fundamentos. Por isso, o próximo passo natural é aprender Docker Compose, que permite definir ambientes com múltiplos containers — sua app, banco de dados e Redis, por exemplo — em um único arquivo docker-compose.yml. É o que a maioria dos times usa no dia a dia de desenvolvimento.
Agora que você criou seu primeiro Dockerfile, o próximo passo é escrever um bem otimizado. Para isso, confira nosso post com as principais boas práticas para criação de Dockerfiles.
Se você quiser ir além dos containers, vale conhecer o Kubernetes — a plataforma que orquestra múltiplos containers em produção. Confira nosso guia: Kubernetes: Criando seu cluster localmente com Kind
📚 Referências e links úteis:
- Documentação oficial do Docker
- Docker Hub – Repositório oficial de imagens
- Baixar Docker Desktop
- Guia oficial do Dockerfile
❓ Dúvidas?
Tem alguma dúvida sobre os comandos ou o Dockerfile? Deixa nos comentários abaixo que respondemos.
Escrito por 🖋️ Diogo Lima
Sócio Fundador da Empresa Deltaops