我们可以在单个 Windows 11 主机上安装多个相同类型的 WSL2 发行版吗?

我们可以在单个 Windows 11 主机上安装多个相同类型的 WSL2 发行版吗?

我希望安装‘n’个 debian,不是每个版本安装一次,而是安装同一个 debian 12 的‘n’个。

每个实例应该有一组不同的 php/nginx|apache/mysql|mariadb

首先,是否可以在同一个 Windows 11 Pro 主机上的同一个 wsl2 上安装多个 Debian 12?

如果是,那么多个 apache|nginx 实例是否可以在同一个端口 80/443 上运行,并将它们设置为仅监听内部 wsl 实例 ip?

答案1

以下是如何拥有同一发行版的多个副本:

  • 从 Windows 商店安装基础发行版或者使用:

    wsl --install -d <distribution name>
    
  • 登录环境并​​根据需要进行修改,然后退出

  • 使用以下命令导出环境:

    wsl --export <distribution name> <export file name>
    
  • 通过导入文件创建基础环境的新实例 .tar

    wsl --import <new distribution name> <install location> <export file name>
    
  • 您现在可以使用以下方式打开新环境:

    wsl -d <new distribution name>
    
  • 在 Windows 11 中,您可以通过以下方式在资源管理器中浏览发行版的文件系统桌面 > Linux

  • 新发行版将具有root默认用户。要以其他用户身份登录,请使用标志或在环境内的目录中-u <username>创建/修改文件,其中包含以下部分:wsl.conf/etc

    [user]
    default=<username>
    

有关更多截图信息,请参阅文章
设置多个 WSL 分发实例

答案2

如果您从 Microsoft Store 安装了 Debian(或其他发行版),那么根文件系统 tarball 通常仍会保留在您的系统上,可以直接--import将其安装到新发行版中。当您想要一个不包含您在现有发行版中所做的更改的“原始”版本时,这会很有用。

要做到这一点:

  1. 启动 PowerShellStart a PowerShell行政shell。仅当运行以下命令时才需要管理员访问权限,因为该C:\Program Files\WindowsApps目录受到保护,不能进行普通访问:

    Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\' | Where-Object {$_.Name -eq 'install.tar.gz' }
    

    这将返回您从 Microsoft Store 安装的(大多数)发行版列表以及位置。将目录名称复制到剪贴板。例如,在我的系统上,Debian 位于:

    C:\Program Files\WindowsApps\TheDebianProject.DebianGNULinux_1.12.2.0_x64__76v4gfsz19hv4
    

    Ubuntu 22.04 位于:

    C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu_2204.1.8.0_x64__79rhkp1fndgsc
    

    如果您有不同的版本,位置可能会略有不同。

  2. 退出管理 PowerShell 并启动常规 PowerShell。

  3. 创建要在其中存放新发行版的虚拟 SDD 的目录。使用变量名,因为我们将在后续步骤中再次使用它:

    $newDistroDir = "D:\WSL\DebianTesting\"
    mkdir $newDistroDir
    
  4. 将上面复制的目录分配给一个变量(可选,但更清楚):

    $rootFSDirectory = "C:\Program Files\WindowsApps\TheDebianProject.DebianGNULinux_1.12.2.0_x64__76v4gfsz19hv4"
    
  5. 导入新的分布:

    wsl --import DebianTesting $newDistroDir ($rootFSDirectory+"\install.tar.gz")
    

    替换DebianTesting为您所需的名称。

  6. 启动新的分发:

    wsl ~ -d DebianTesting
    
  7. 创建您的常规用户。这通常由 WSL Distro 安装程序完成,但如果从根 FS tarball 导入,则需要手动完成。您的用户的确切组会因发行版而异,因此请检查您的“原始”组。 这个答案包括 Ubuntu 20.04 的示例。

  8. 继续为手动安装的 WSL 发行版设置默认用户

相关内容