Sta*_*ger 23 windows documents docker windows-subsystem-for-linux wsl2
我在github上找到了这个文档:
不过它已经有一段时间没有更新了,所以我想知道是否有人知道 Microsoft 是否已经发布了一份技术文档来描述 WSL2 发行版作为容器的实现。
Not*_*1ds 28
您的标题中有一个问题,正文中有一个不同的问题。当然,高度相关的问题。
Windows WSL2“发行版”只是底层的 docker 容器吗?
正如@DanielB 已经回答的那样,WSL2 发行版利用与 Docker 使用的 Linux 内核相同的容器/命名空间技术,但它们不是Docker容器。
Linux 上的几乎所有容器技术的核心都使用相同的技术 - LXC、systemd-nspawn以及许多其他技术。
是的,这意味着当我们在 WSL2 上运行 Docker Engine 或 Docker Desktop 时,我们实际上是在 WSL2 托管 VM 内的 (WSL2) 容器内使用 (Docker) 容器。
我想知道是否有人知道 Microsoft 是否已经发布了一份技术文档来描述 WSL2 发行版作为容器的实现。
据我所知,没有。当然,您链接的 MicrosoftDocs/WSL Github 问题仍然悬而未决。
在CommandLine 开发博客上的宣布 WSL 2帖子中,提到:
您可以期待在不久的将来发布到此博客上的有关架构的具体更改的更多详细信息,因此请继续关注!
然而,我从未在博客上看到过深入探讨。
据我所知,他们最接近的描述是在Build 2019 会议中。40 多分钟后,有人提到他们利用标准 Linux 命名空间和容器 API 在 WSL2 VM 内创建发行版。
虽然对此有深入的文档会很棒,但我们现在至少有一个很好的替代方案——能够将命令行输入到根 WSL2 命名空间并直接检查分发命名空间。
从版本0.51.2开始,您可以将以下内容添加到您的%userprofile%\.wslconfig:
[wsl2]
debugShell=true
Run Code Online (Sandbox Code Playgroud)
然后发出一个wsl --shutdown. 下次启动 WSL2 发行版时,您还将获得一个单独的控制台,该控制台以 root 身份登录到直接在 WSL2 VM 中运行的 Mariner 发行版。运行 aps axjf将获得相当广泛的进程列表,包括每个发行版中运行的进程。假设您只运行一种发行版,您可以:
pgrep -u 1000 bash
Run Code Online (Sandbox Code Playgroud)
...查找以 uid 1000(默认 WSL uid)运行的 bash shell。然后通过以下方式检查名称空间:
lsns -p $(pgrep -u 1000 bash)
Run Code Online (Sandbox Code Playgroud)
我将把它留给你从那里探索。
有点,是的。它们是容器,但 Docker 不参与\xe2\x80\x99。相反,WSL 2 直接构建在也支持 Docker(命名空间和控制组)的 Linux 技术之上。
\nWSL 2 发行版容器有自己的 PID 和挂载命名空间,但所有发行版共享一个网络命名空间。
\n| 归档时间: |
|
| 查看次数: |
7982 次 |
| 最近记录: |