Instalei recentemente o Ubuntu 22.04 WSL no meu PC com Windows 10.
Meu entendimento ingênuo é que este "aplicativo" do Ubuntu é equivalente a um ambiente de desenvolvimento Linux.
Quando exploro dentro do aplicativo Ubuntu em execução, geralmente parece o Linux normal ao qual estou acostumado: o shell parece ser bash
, e tenho acesso a executáveis como git
, curl
, man
, etc.
Confiando nesta afirmação de que este Ubuntu WSL é equivalente a um ambiente de desenvolvimento Linux, agora quero executar o Docker nesta instância do Ubuntu.
Meu entendimento ingênuo é que "como o Linux suporta contêineres nativamente, devo instalar o Docker Engine" no Linux.
Então eu segui os passos descritos aqui: https://docs.docker.com/engine/install/ubuntu/
Mas quando tento verificar se o Docker Engine está instalado corretamente executando a imagem hello-world, recebo o seguinte erro:
$ sudo docker run hello-world
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
Não há /var/run/docker.sock
e não acho que o daemon do Docker esteja em execução:
$ ls -l /var/run/docker.sock
ls: cannot access '/var/run/docker.sock': No such file or directory
$ ps aux | grep containerd
user 10212 0.0 0.0 8164 732 pts/2 S+ 21:44 0:00 grep --color=auto containerd
Alguém pode me ajudar a entender o que deu errado e se houver uma ação corretiva que eu possa tomar para instalar com êxito o Docker neste aplicativo Ubuntu WSL no meu PC com Windows?
Talvez as instruções em https://docs.docker.com/engine/install/ubuntu/ sejam apenas para "Ubuntu instalado nativamente em um PC host" e não para o Ubuntu WSL em execução em um PC com Windows?
Em caso afirmativo, existe alguma outra maneira de "instalar o Docker" para que os comandos do Docker sudo docker run hello-world
possam ser executados no meu Ubuntu WSL?
Estou bastante confuso com todas as camadas de software envolvidas aqui.
Na verdade, é mais como executar o Ubuntu em um contêiner, porque realmente é . Ao executar o Ubuntu em um contêiner (por exemplo, um contêiner do Docker Ubuntu), existem diferenças em como você configura os serviços quando comparado a uma máquina física ou virtual. Por exemplo, não há Systemd sendo executado por padrão em um contêiner do Docker Ubuntu. Não há "login" e, portanto, não há PAM.
Tentei escrever tantas diferenças e limitações quanto posso pensar nesta resposta do Ask Ubuntu .
Primeiro, para a maioria dos usuários, a maneira recomendada de instalar o Docker no Windows/WSL2 é por meio do Docker Desktop para Windows .
Eu abordo algumas razões pelas quais isso é preferível nesta resposta do Stack Overflow .
Embora seja possível instalar e executar o Docker Engine manualmente em uma instância WSL2, há uma diferença crítica que explico nesta resposta . Em resumo, o pacote Docker Engine no Ubuntu tenta iniciar o daemon via Systemd, que (como mencionado acima) não está sendo executado por padrão no WSL. No Ubuntu sob WSL2, você precisa primeiro iniciar o daemon com: