# Docker no Windows: instalar e rodar o primeiro container

> Instale o Docker Desktop com WSL no Windows, teste com hello-world e crie sua primeira imagem com Dockerfile, vendo o container voltar ao estado da imagem.

- Autor: Henrylle Maia, consultor AWS
- Publicado em: 2026-10-15
- Assuntos: Containers
- URL: https://pages.formacaoaws.com.br/blog/docker-no-windows/
- Aula de origem: "Instalando e Trabalhando com Docker no Windows" (https://www.youtube.com/watch?v=CmsEGQ70paA)

Para trabalhar com Docker no Windows você instala o Docker Desktop com o WSL como back-end, confirma com um `docker run hello-world` e já pode construir imagens suas com um Dockerfile. Abaixo está o caminho que eu fiz, incluindo o problema que apareceu comigo no meio da instalação.

Esta aula é de setembro de 2021. Os requisitos e os passos de instalação de hoje estão na [documentação oficial do Docker Desktop para Windows](https://docs.docker.com/desktop/setup/install/windows-install/).

## O que você precisa antes

Eu uso Linux no dia a dia, mas muita gente que me acompanha usa Windows, então gravei no Windows. O processo é bem parecido, e o site do Docker traz um passo a passo. O que é o Docker, o Dockerfile e a estrutura de container eu expliquei em outro vídeo do meu canal, que vale ver antes ou depois deste.

O Docker Desktop pode trabalhar com o WSL ou com o back-end Hyper-V e containers Windows. Eu usei o padrão, o WSL, para rodar containers Linux. O WSL é a camada que o Windows oferece para rodar Linux dentro dele, e é ele que permite rodar Docker no Windows.

Não fiz a instalação antes de gravar: o que aconteceu comigo é o que pode acontecer com você.

## Passo 1: instalar o Docker Desktop

Pesquise "Docker Windows" e abra a página de instalação do Docker Desktop. Ela lista os requisitos da máquina. Depois:

1. Baixe o Docker Desktop para Windows.
2. Execute o instalador como administrador.
3. Deixe marcada a opção de instalar os componentes do WSL, e a do atalho na área de trabalho se quiser.
4. Espere a extração dos pacotes. Ao terminar, ele pede para fechar e reiniciar o sistema.

## Passo 2: se o WSL reclamar, atualize o Windows

Ao reiniciar, o Docker tentou usar o WSL e não funcionou: o WSL disse que o Windows precisava ser atualizado. O meu era um Windows 10 que tinha chegado ao fim da vida. Atualizei, reiniciei e o Docker subiu.

Se o Docker avisar que o WSL está com problema, o provável é que você precise atualizar o Windows também. O Docker mostra um link que leva ao WSL. Depois de atualizar, confira se o comando `wsl` funciona no terminal.

Não desista aqui: sem passar por essa dor você não tem os benefícios de trabalhar com Docker.

## Passo 3: testar com hello-world

Abra o Prompt de Comando. Primeiro liste os containers:

```bash
docker ps
```

Ainda não há nenhum. Agora rode o clássico:

```bash
docker run hello-world
```

Se aparecer a mensagem "Hello from Docker!", a máquina está pronta. O que o comando fez: procurou a imagem `hello-world` na minha máquina, não achou, baixou do Docker Hub (o repositório oficial de imagens do Docker, com imagens públicas e privadas) e executou um container a partir dela. O `docker images` lista as imagens que você tem.

![No Prompt de Comando, docker run hello-world não acha a imagem localmente, baixa do Docker Hub e imprime "Hello from Docker!"](https://pages.formacaoaws.com.br/blog/assets/posts/docker-no-windows/hello-world-no-windows.webp)

## Passo 4: rodar um container Ubuntu e ver que ele não guarda estado

Instale o VS Code se ainda não tiver; eu usei o terminal dele daqui em diante. No Docker Hub, abra a página do Ubuntu e olhe as tags. Escolhi a 18.04, a mesma que uso no dia a dia. Rode um container interativo:

```bash
docker run -ti ubuntu:18.04
```

O `-ti` deixa você interagir com o container e ver a saída na tela. Como a imagem não existia localmente, ele baixou e extraiu. Você cai dentro do container: com `ls` vê os diretórios dele.

Entre em `/usr`, crie uma pasta e saia:

```bash
cd /usr
mkdir teste
exit
```

Rode o container de novo e entre em `/usr`: a pasta `teste` não existe mais. Ao sair, você encerrou o container, e tudo o que estava dentro dele se perdeu. Esse comportamento sem estado (stateless) é o motivo de o container servir tão bem para rodar aplicações web na nuvem: cada execução volta ao que a imagem define.

Sobre guardar arquivos fora do container, veja [Volume no Docker: guardar logs e arquivos fora do container](https://pages.formacaoaws.com.br/blog/volume-no-docker-windows-e-linux/).

## Passo 5: criar sua imagem com um Dockerfile

O Dockerfile é o arquivo que descreve uma imagem customizada. Numa pasta (a minha se chamava `fontes`), crie um arquivo chamado `Dockerfile` com este conteúdo:

```dockerfile
FROM ubuntu:18.04
WORKDIR /usr
RUN mkdir teste
RUN apt-get update -y
RUN apt-get install nano -y
```

Em ordem: parte da imagem base Ubuntu 18.04, entra no diretório `/usr`, cria a pasta `teste`, atualiza os pacotes e instala o nano, um editor de texto de terminal que a imagem base não tinha.

Construa a imagem. O `-t` dá o nome (a tag) e o ponto diz que o Dockerfile está na pasta atual:

```bash
docker build -t teste-windows .
```

Quando terminar, confira com `docker images`: a `teste-windows` aparece na lista, ao lado da `hello-world` e da `ubuntu`.

![O Dockerfile com as cinco instruções e o docker images listando teste-windows, de 102MB, ao lado de hello-world e ubuntu 18.04](https://pages.formacaoaws.com.br/blog/assets/posts/docker-no-windows/dockerfile-e-docker-images.webp)

## Passo 6: provar que o container volta ao estado da imagem

Rode um container da sua imagem:

```bash
docker run -ti teste-windows
```

Ele já entra em `/usr`, porque o Dockerfile mandou entrar nesse diretório. O `ls` mostra a pasta `teste` e o `nano` abre, sem eu ter instalado nada à mão. Tudo isso vem da imagem.

Agora entre em `teste`, crie a `teste2`, saia e rode o container de novo:

![Primeira execução: cd teste, mkdir teste2 e exit. Segunda execução: ls em /usr mostra a pasta teste, e o ls dentro dela vem vazio](https://pages.formacaoaws.com.br/blog/assets/posts/docker-no-windows/teste-container-sem-estado.webp)

A `teste2` não existe. Ela não faz parte da imagem, e o container roda exatamente o estado em que a imagem foi congelada. Se o seu projeto web tem os fontes na imagem e algo é alterado dentro do container, você quer que, ao rodar de novo, ele volte ao estado original. É isso que acabou de acontecer.

**Fluxo:** Docker Desktop (WSL como back-end) → hello-world (confirma a instalação) → Dockerfile (partindo do Ubuntu 18.04) → docker build (imagem teste-windows) → Container (volta ao estado da imagem)

## Checklist

- Abra a documentação oficial do Docker Desktop para Windows e confira os requisitos da sua máquina.
- Instale o Docker Desktop executando o instalador como administrador e reinicie.
- Se o WSL reclamar, atualize o Windows e confira se o comando `wsl` funciona.
- Rode `docker ps` e `docker run hello-world` para confirmar que o Docker responde.
- Rode `docker run -ti ubuntu:18.04`, crie uma pasta, saia e veja que ela some ao rodar de novo.
- Crie um Dockerfile, rode `docker build -t teste-windows .` e `docker images`.
- Rode `docker run -ti teste-windows` e confirme a pasta `teste` e o `nano`.

Com o Docker rodando no Windows e a primeira imagem construída, você acompanha os outros conteúdos de Docker do canal.
