Pular para o conteúdo
Cursos

DevClub

LógicaFront-endBack-endMobile

IA Club

IA na prática
Estudar programaçãoEstudar IA
LiçãoIniciantecódigo testado

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.

Rodolfo Mori6 min de leitura

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:

bash
docker version --format 'Client {{.Client.Version}} | Server {{.Server.Version}}'
Client 29.5.3 | Server 29.5.3

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:

bash
docker compose version --short
5.1.4

O 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:

bash
docker info --format 'Sistema: {{.OperatingSystem}} | Arquitetura: {{.Architecture}}'
Sistema: Docker Desktop | Arquitetura: aarch64

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:

bash
docker context show
desktop-linux

Liste os disponíveis e veja qual está selecionado:

bash
docker context ls --format '{{.Name}} | {{.Current}}'
default | false desktop-linux | true

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.

bash
docker run --rm hello-world
Hello from Docker! This message shows that your installation appears to be working correctly.

As 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:

bash
docker run --rm node:24-alpine node --version
v24.19.0

O 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:

bash
DOCKER_HOST=unix:///tmp/docker-devclub-inexistente.sock docker info 2>&1 | tail -2
Server: failed to connect to the docker API at unix:///tmp/docker-devclub-inexistente.sock; check if the path is correct and if the daemon is running: dial unix /tmp/docker-devclub-inexistente.sock: connect: no such file or directory

O 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:

bash
docker system df --format 'table {{.Type}}\t{{.TotalCount}}\t{{.Size}}'
TYPE TOTAL SIZE Images 61 54.06GB Containers 59 270.9MB Local Volumes 106 4.858GB Build Cache 176 13.51GB

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.

  • docker
  • instalacao
  • docker desktop
  • docker engine
  • docker compose
  • terminal

Perguntas frequentes

Docker Desktop e Docker Engine são a mesma coisa?
Não. Docker Engine é o motor que cria e executa contêineres. Docker Desktop é o aplicativo para Windows, macOS e Linux que reúne Engine, CLI, Compose e uma interface gráfica. No Linux você também pode instalar só o Engine e os plugins oficiais.
Preciso deixar o Docker Desktop aberto o tempo todo?
O aplicativo pode ficar minimizado, mas o backend precisa estar em execução enquanto você usa contêineres. Se ele for encerrado, a CLI continua instalada e passa a responder que não conseguiu alcançar o daemon.
Posso usar Docker sem sudo no Linux?
Sim, mas adicionar sua conta ao grupo docker concede privilégios equivalentes aos de root. A documentação oficial também oferece o modo rootless para quem precisa reduzir essa permissão.
Docker já instala o Node.js na minha máquina?
Não. A imagem pode carregar o Node dentro de um contêiner sem instalar o runtime no host. O Node local e o Node do contêiner são instalações separadas.

Dúvidas e comentários

Travou em algum passo? Pergunte aqui — a equipe e outros alunos respondem.

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

  1. Docker Docs — Docker Desktop — docs.docker.com
  2. Docker Docs — Install Docker Engine — docs.docker.com
  3. Docker Docs — Install Docker Desktop on Mac — docs.docker.com
  4. Docker Docs — Install Docker Desktop on Windows — docs.docker.com
  5. Docker Docs — Linux post-installation steps — docs.docker.com

Continue por aqui