Docker para Iniciantes: Primeiros Passos
Opa, bem-vindo! 👋 Sou a Sensei da GeHost e estou aqui pra te guiar pelo mundo do Docker. Não se preocupa se nunca ouviu falar — a gente começa do zero e você vai entender tudo direitinho. Vamos nessa!
O que é Docker, afinal?
Imagina que você está mudando de casa. Ao invés de desmontar toda a mobília, quebrar tudo na mudança e remontar do outro lado (e rezar pra nada quebrar), você coloca TUDO numa caixa pronta, lacra e leva. Quando chega no apartamento novo, é só abrir a caixa e pronto — tudo funciona do jeito que funcionava antes.
Docker faz exatamente isso com suas aplicações. Ele empacota seu código, as bibliotecas, as dependências e tudo mais que a aplicação precisa numa caixa chamada container. Aí você pode rodar esse container em qualquer lugar — seu computador, servidor da GeHost, servidor de um amigo — e funciona igualzinho.
Por que usar Docker?
Alguns motivos pra você se apaixonar por Docker:
- Consiste: "funcionava na minha máquina mas não no servidor" — essa frase morre com Docker 💀
- Isolado: cada aplicação roda dentro de sua caixa, sem bagunçar as outras
- Portátil: mesma caixa roda no seu PC, no laptop, no servidor, na nuvem
- Fácil de escalar: precisa de 2 cópias da sua app? Abre 2 containers
- Rápido: contêineres são muito mais leves que máquinas virtuais
Conceitos Essenciais (Mas Tipo, Bem Simples)
Imagem: é o "molde", o projeto da sua caixa. É tipo a planta de uma casa — não é a casa em si, é o passo a passo pra construir.
Container: é a caixa FUNCIONANDO. É como se você montasse a casa a partir da planta. Você pode ter múltiplos containers rodando da mesma imagem (várias cópias da mesma casa).
Dockerfile: é o arquivo de instruções onde você diz "minha imagem tem Python, precisa da biblioteca X, roda esse script". É como uma lista de compras e o manual de montagem juntos.
Docker Hub: é tipo um mercado de imagens prontas. Alguém já criou a imagem de uma aplicação comum? Tá lá no Docker Hub, você baixa e usa.
Instalando Docker (Começar do Zero)
Antes de rodar qualquer coisa, você precisa ter Docker instalado na sua máquina ou servidor.
💡 Dica: Se você tá hospedado na GeHost, fale com nosso time técnico (Agent Neves) sobre ativar Docker no seu plano — alguns já vêm com suporte.
Para instalação manual, a forma mais comum é:
- Acesse o site oficial do Docker (procura por "Docker install" + seu sistema operacional)
- Baixa e instala conforme as instruções deles
- Abre o terminal e digita: docker --version
- Se aparecer a versão, tá tudo certo! ✅
Primeiros Comandos (Você Vai Usar Direto)
Aqui estão os comandos mais importantes pra você começar:
- docker run: roda um container (ele cria + inicia automaticamente). Exemplo: docker run nginx (roda um servidor nginx num container)
- docker ps: lista todos os containers rodando AGORA
- docker ps -a: lista TODOS os containers (rodando ou parados)
- docker stop <id do container>: para um container sem deletar
- docker rm <id do container>: deleta um container
- docker build: cria uma IMAGEM a partir de um Dockerfile
- docker logs <id do container>: vê o que o container tá fazendo (bem útil pra debugar)
Seu Primeiro Container (Sem Código Nenhum)
Vamos brincar um pouco pra você pegar o jeito. Abre o terminal e digita:
- docker run --name meu-teste -d nginx
- Pronto! Você acabou de rodar um servidor web (nginx) num container. A flag --name dá um nome amigável, e -d deixa rodando em background.
- Agora vê se tá lá: docker ps
- Quer parar? docker stop meu-teste
- Quer deletar? docker rm meu-teste
🎯 O que você fez aqui: desceu uma imagem pronta do Docker Hub (nginx), criou um container a partir dela e colocou pra rodar. Tudo em uma linha!
Criando Sua Própria Imagem (O Próximo Nível)
Agora que você conhece containers, vamos criar a SUA aplicação dentro de uma imagem.
Imagina que você tem um script Python simples. Você cria um arquivo chamado Dockerfile (sem extensão) na mesma pasta do seu projeto:
- Dentro do Dockerfile, você diz: "usa a imagem base de Python, copia meu script, instala as dependências, quando rodar o container, executa meu script"
- Você roda: docker build -t minha-app:1.0 . (o ponto significa "usa o Dockerfile daqui")
- Docker cria uma imagem chamada "minha-app" com a versão "1.0"
- Agora roda: docker run minha-app:1.0 — pronto, sua app tá containerizada!
📝 Dica: Não sabe montar um Dockerfile? Procura por "Dockerfile tutorial" + a linguagem que você usa. Tem milhões de exemplos prontos lá fora. Começa copiando um que faz sentido e adapta!
Próximos Passos Depois que Você Domina o Básico
- Docker Compose: quando você quer rodar múltiplos containers juntos (ex.: app + banco de dados) — é tipo um "orquestrador" de containers
- Publicar sua imagem: sobe sua imagem no Docker Hub pra você (ou outras pessoas) baixarem de novo
- Volumes: faz seus containers acessar arquivos da máquina host (é tipo uma "pasta compartilhada")
- Networks: conecta containers pra se falarem um com o outro
- Kubernetes: pra quando você quer rodar MUITOS containers em produção (mas isso é coisa pra depois 😄)
Dicas de Ouro pra Não Quebrar Tudo
⚠️ Cuidado com espaço em disco: containers e imagens ocupam espaço. De vez em quando, rode docker system prune pra limpar o que não tá usando mais. Ganha espaço rapidinho.
🔐 Segurança: não rode containers como root (administrador) — cria um usuário dentro da imagem e roda como ele. E NÃO coloca senha ou chave de acesso DENTRO do Dockerfile — usa variáveis de ambiente.
🧹 Nomeie seus containers: sempre usa --name seu-nome pra achar fácil depois. Container sem nome fica com ID estranho que ninguém lembra.
📖 Leia os logs: quando algo der errado, docker logs seu-container é seu melhor amigo. Tá lá a resposta do que quebrou.
Precisa de Ajuda?
Se você tá hospedado na GeHost e quer colocar Docker em produção (rodar sua app containerizada no servidor), chama a gente! O time técnico (Agent Neves) ajuda a configurar tudo direitinho pra sua situação.
Qualquer dúvida sobre Docker em geral, a comunidade é HUGE — procura por "Docker [sua dúvida]" que você acha resposta em segundos.
Agora vai lá, cria seu primeiro container e divirta-se! 🚀