"Essa publicação aborda como fazer isso no Windows 10, mas deve funcionar com Windows 11 e qualquer WSL que suporte a execução do Docker. Digo "deveria" porque não experimentei pessoalmente todas as distros, mas não há nada sobre isso que indique que não funcionará em outras distros."
Anteriormente eu havia escrito um artigo no TabNews sobre como fazer para rodar o Docker no Windows sem a necessidade do Docker Desktop. Hoje, novamente, alguns meses depois, trago uma melhoria dessa evolução. E muito mais instruída para que você não fique perdido em como rodar a aplicação por debaixo dos panos.
O processo para rodar contêineres Windows é muito fácil, você precisa primeiro habilitar essa funcionalidade. Faça isso em um terminal administrativo usando PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Containers
Você provavelmente vai precisar reiniciar. Se ele reclamar, você pode precisar primeiro habilitar a funcionalidade de Hyper-V:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Então instale o Docker. Estou usando o Scoop, porque ele já traz também o dockerd.exe
através do Windows, sem precisar de interação direta no WSL, mas você pode usar outro método se preferir, baixando esses executáveis diretamente no site do Docker. O Rancher Desktop trará o docker.exe
, mas não o dockerd.exe
, então não é suficiente para este passo, mesmo que você o tenha instalado.
Lembrando que o Scoop é usado fora de um terminal administrativo.
Pra ganhar o docker.exe e o dockerd.exe
scoop install docker
Então, em um terminal administrativo (WSL por exemplo), instale e configure o serviço do Docker:
Cria o Serviço NT Docker
dockerd --register-service
Configura o serviço para iniciar manualmente assim ele não inicia com o Windows
Set-Service docker -StartupType Manual
Inicia o serviço
Start-Service docker
Checa se o pipe foi criado
Get-Item //./pipe/docker_engine
Verifica se o Docker está funcionando no terminal de admin
docker info
Até esse momento você precisou de um terminal administrativo para usar o Docker, mas agora vamos permitir que seu usuário faça o acesso por um terminal normal. O Docker usa o named pipe //./pipe/docker_engine
para se comunicar. Alguns tutoriais indicam mexer nas ACLs deste pipe, mas isso não é o ideal. A melhor opção é alterar o arquivo de configuração do Docker e deixá-lo controlar o acesso, assim (de novo no terminal administrativo):
Configura o Docker para funcionar com o usuário atual sem precisar de um terminal admin
mkdir $env:ProgramData\docker\config
@{ group = "docker-users" } | ConvertTo-Json | Out-File $env:ProgramData\docker\config\daemon.json
Coloca usuário atual no grupo docker-users
, se ele já não existe e já está lá
$dockerUsers = Get-LocalGroup docker-users -ErrorAction SilentlyContinue
if (!($dockerUsers)) {
dockerUsers = New-LocalGroup docker-users
Add-LocalGroupMember -Group $dockerUsers -Member $(whoami)
} else {
if (!(Get-LocalGroupMember $dockerUsers | ? { $_.Name -eq $(whoami) })) {
Add-LocalGroupMember -Group $dockerUsers -Member $(whoami)
}
}
Reinicia o serviço do Docker
Stop-Service docker
Start-Service docker
E a partir daí você já pode usar o Docker direto pelo terminal não-administrativo:
docker info
docker ps
docker build ...
Lembrando que você não vai poder usar o Rancher (ou qualquer outro runtime de contêineres) enquanto o serviço do Docker estiver rodando. Para usá-lo, pare o serviço primeiro:
Stop-Service docker
E, quando for usar contêineres Windows, primeiro inicie o serviço:
Start-Service docker
Consigo instalar o Docker via CLI usando WSL diretamente?
Sim, caso você utilize o WSL, você irá adicionar o docker as dependências da apt
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
Em seguida, você irá instalar a última versão do Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
E depois você poderá verificar se o Docker está instalado corretamente
docker --version
É isso. Muito simples, né? Espero que tenha ajudado.
Caso você ainda queira revisar a primeira versão desse artigo.