Encontrei este documento no github:
Distribuições WSL2 são executadas como contêineres
Ele não foi atualizado há algum tempo, então estou querendo saber se alguém sabe se a Microsoft publicou ou não um documento técnico que descreve a implementação de distribuições WSL2 como contêineres.
Há uma pergunta em seu título e uma pergunta um pouco diferente no corpo. Perguntas altamente relacionadas, com certeza.
As @DanielB already answered, WSL2 distributions utilize the same container/namespace technologies from the Linux kernel that Docker uses, but they are not Docker containers.
Pretty much every container technology on Linux uses these same technologies at the core - LXC,
systemd-nspawn
, and plenty of others.And yes, that means that when we run Docker Engine or Docker Desktop on WSL2, we're really using (Docker) containers inside (WSL2) containers inside the WSL2 managed VM.
As far as I can tell, no. The MicrosoftDocs/WSL Github issue you linked is still open, of course.
E na postagem Anunciando o WSL 2 no devblog CommandLine, é mencionado que:
No entanto, nunca vi um mergulho profundo no blog.
O mais próximo que eles chegam de descrevê-lo, que posso encontrar, é nesta sessão do Build 2019 . Pouco mais de 40 minutos depois, é mencionado que eles utilizam namespace Linux padrão e APIs de contêiner para criar as distribuições dentro da VM WSL2.
Aprender examinando
E embora seja ótimo ter uma documentação detalhada sobre isso, agora temos pelo menos uma boa alternativa -- A capacidade de obter uma linha de comando no namespace WSL2 raiz e inspecionar os namespaces de distribuição diretamente.
A partir da versão 0.51.2 , você pode adicionar o seguinte ao seu
%userprofile%\.wslconfig
:Em seguida, emita um
wsl --shutdown
. Na próxima vez que você iniciar uma distribuição WSL2, você também terá um console separado conectado como root para a distribuição Mariner em execução diretamente na VM WSL2. A execução de a fornecerá umaps axjf
lista de processos bastante extensa, incluindo os processos em execução em cada distribuição. Supondo que você esteja executando apenas uma distribuição, você pode:... para encontrar o shell bash rodando como uid 1000 (o uid WSL padrão). E, em seguida, examine os namespaces por meio de:
Vou deixar para você explorar a partir daí.
Tipo, sim. Eles são contêineres, mas o Docker não está envolvido. Em vez disso, o WSL 2 se baseia diretamente nas tecnologias do Linux que também habilitam o Docker (espaços de nomes e grupos de controle).
Os contêineres de distribuição WSL 2 têm seu próprio PID e namespaces de montagem, mas todas as distribuições compartilham um único namespace de rede.