Instalar Docker no Windows, macOS e Linux sem adivinhar
Instale o Docker pelo caminho oficial, confirme Engine e Compose no terminal e aprenda a diagnosticar quando o cliente não encontra o daemon.
Para instalar Docker sem misturar peças incompatíveis, escolha o pacote oficial do seu sistema, inicie o motor e confirme no terminal que cliente, daemon e Compose respondem. Nesta lição você termina com um contêiner real rodando Node, além de um roteiro curto para reconhecer uma instalação pela metade.
Você não precisa ter Node instalado para acompanhar. A própria imagem
node:24-alpine traz o runtime usado no teste. Se os termos ainda forem novos,
deixe o guia completo de Docker aberto como mapa e volte a
ele quando quiser enxergar a jornada inteira.
Dois guichês precisam estar abertos
Docker tem uma arquitetura cliente-servidor. O comando docker é a CLI, o
cliente que recebe o que você digitou. O Docker daemon, também chamado de
Engine, é o serviço que baixa imagens, cria redes e inicia contêineres. Compose
é um plugin da CLI para descrever vários serviços juntos.
Pense na retirada de pedidos de uma padaria. Você entrega a comanda no balcão;
a cozinha executa o pedido. A CLI é o balcão, o daemon é a cozinha e o socket é
o passa-pratos entre os dois. Ter o balcão instalado não prova que a cozinha
está aberta. Voltando ao comportamento técnico: docker --help pode funcionar
mesmo com o daemon parado, enquanto docker info precisa conversar com ele.
Essa divisão explica o erro mais comum da instalação. A pessoa encontra o
executável docker, mas qualquer comando que cria contêiner falha. Não é hora
de reinstalar tudo: primeiro descubra qual dos dois lados não respondeu.
Qual instalador usar em cada sistema
No macOS, use Docker Desktop e escolha o download correspondente ao chip:
Apple silicon para M1, M2, M3 e seguintes; Intel para os Macs antigos. Mova o
aplicativo para Applications, abra-o e conclua as permissões solicitadas. O
Docker Desktop inicia uma pequena máquina Linux administrada pelo próprio
aplicativo, porque contêineres Linux precisam de um kernel Linux.
No Windows, Docker Desktop com o backend WSL 2 é o caminho normal para contêineres Linux. Atualize o WSL, instale o Desktop e mantenha marcada a opção de usar o engine baseado em WSL 2. Não instale outro Docker Engine dentro da mesma distribuição WSL: dois motores e dois contextos tornam o diagnóstico desnecessariamente confuso.
No Linux, você pode usar Docker Desktop ou instalar Docker Engine pelo
repositório oficial da sua distribuição. A página oficial separa Ubuntu,
Debian, Fedora, CentOS e outras plataformas. Evite copiar uma sequência antiga
de comandos de um artigo: chave, repositório e nomes de pacote mudam. Depois da
instalação, confirme que o serviço está ativo. Se decidir usar o grupo docker
para dispensar sudo, lembre que esse grupo concede acesso equivalente a
root; não é apenas uma comodidade inofensiva.
Em ambiente de empresa, confira também a licença atual do Docker Desktop e as regras da organização. Isso não muda os comandos da aula, mas pode mudar qual pacote o time autoriza.
A conferência começa pelas três versões
Abra um terminal novo. O primeiro comando pergunta separadamente a versão do cliente e a versão do servidor:
docker version --format 'Client {{.Client.Version}} | Server {{.Server.Version}}'Se só Client aparecer e a parte do servidor terminar em erro, a CLI existe,
mas não alcançou o daemon. Agora confirme Compose:
docker compose version --shortO comando atual tem espaço: docker compose. O antigo docker-compose, com
hífen, era uma distribuição separada e ainda aparece em tutoriais desatualizados.
Por fim, peça duas características do motor. Elas ajudam a conferir se o Docker Desktop está usando o backend esperado:
docker info --format 'Sistema: {{.OperatingSystem}} | Arquitetura: {{.Architecture}}'Nesta máquina o host é um Mac ARM64, mas os contêineres rodam no backend Linux
do Docker Desktop. Num computador Intel, a arquitetura costuma aparecer como
x86_64.
O contexto decide com qual motor você conversa
Um Docker context guarda o endereço do daemon e outras configurações de conexão. Em português simples, é o contato selecionado na agenda da CLI. Veja o contexto ativo:
docker context showListe os disponíveis e veja qual está selecionado:
docker context ls --format '{{.Name}} | {{.Current}}'O true marca o contexto atual. Se seu terminal aponta para um contexto remoto
ou antigo, abrir o Docker Desktop local não conserta aquela conexão. Troque de
contexto conscientemente; não apague configurações sem saber se pertencem ao
trabalho.
O primeiro contêiner prova o caminho inteiro
hello-world é pequeno e testa a sequência completa: a CLI chama o daemon, o
daemon procura a imagem, baixa do registro, cria um contêiner e devolve a saída.
docker run --rm hello-worldAs linhas de download aparecem apenas na primeira execução. --rm remove o
contêiner depois que ele termina; a imagem baixada continua no cache.
Agora rode o runtime que será usado no restante da trilha Docker:
docker run --rm node:24-alpine node --versionO node --version aconteceu dentro do contêiner. Para comprovar, compare com o
Node do seu host — ou execute mesmo numa máquina sem Node local. A próxima
lição mostra com precisão a diferença entre
imagem e contêiner Docker.
Erro real: o cliente existe, mas o daemon sumiu
Para reproduzir o problema sem desligar o Docker da máquina, a gente aponta somente este comando para um socket inexistente:
DOCKER_HOST=unix:///tmp/docker-devclub-inexistente.sock docker info 2>&1 | tail -2O termo técnico é falha de conexão com o daemon. Traduzindo: o balcão tentou
entregar a comanda num passa-pratos que não existe. No macOS e no Windows,
confirme que Docker Desktop terminou de iniciar. No Linux, confira o serviço e
as permissões do socket. Em qualquer sistema, veja se DOCKER_HOST ou o
contexto ativo está desviando a CLI para outro endereço.
Não resolva isso dando permissão total a arquivos aleatórios. A mensagem fala de conexão; descubra primeiro se é endereço ausente, daemon parado ou acesso negado.
Quanto espaço a instalação já usa
Imagens, contêineres, volumes e cache ficam fora da pasta do projeto. O comando de leitura abaixo mostra o inventário sem apagar nada:
docker system df --format 'table {{.Type}}\t{{.TotalCount}}\t{{.Size}}'Seus números serão diferentes. Não use docker system prune só porque o total
pareceu alto: esse comando remove recursos e pode atingir cache e ambientes que
você ainda usa. Nesta primeira aula, ler o inventário é suficiente.
Missão: entregar quatro provas da instalação
Rode novamente docker version, docker compose version --short, docker context show e o contêiner com Node. A missão passa quando você consegue
registrar estes quatro fatos: versão do cliente, versão do servidor, versão do
Compose e v24.19.0 vindo da imagem node:24-alpine.
Depois faça uma mudança controlada: troque apenas a imagem para node:24-slim.
O critério de sucesso é o comando continuar respondendo uma versão v24, mesmo
com outra base Linux. Não confunda essa troca com instalar outra versão no host;
quem muda é o pacote executado pelo daemon.
Com o ambiente confirmado, siga para a lição de imagem e contêiner. Depois dela, você estará pronto para escrever um Dockerfile para Node sem decorar instruções.
Perguntas frequentes
Docker Desktop e Docker Engine são a mesma coisa?
Preciso deixar o Docker Desktop aberto o tempo todo?
Posso usar Docker sem sudo no Linux?
Docker já instala o Node.js na minha máquina?
Dúvidas e comentários
Travou em algum passo? Pergunte aqui — a equipe e outros alunos respondem.
Entrar para perguntarÉ o mesmo login gratuito dos cursos.
Nenhuma dúvida por aqui ainda — a primeira pode ser a sua.
Todo o código deste artigo foi executado em Docker Engine 29.5.3, Docker Compose 5.1.4 e Node 24.19.0 (node:24-alpine) no macOS ARM64, e as saídas exibidas são as reais — como produzimos este conteúdo.
Fontes consultadas
- Docker Docs — Docker Desktop — docs.docker.com
- Docker Docs — Install Docker Engine — docs.docker.com
- Docker Docs — Install Docker Desktop on Mac — docs.docker.com
- Docker Docs — Install Docker Desktop on Windows — docs.docker.com
- Docker Docs — Linux post-installation steps — docs.docker.com


