"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.