Windows 2019 上的 Docker 无法切换到 Linux OSType

jwd*_*y13 0 linux docker windows-server-2019

我无法将 docker 切换为在 2019 Windows Server 上以 Linux 模式运行。我在网上找到了几个指南,它们展示了如何通过 powershell 执行此操作。运行 PS 脚本后,我注意到 hyper-v 中没有安装虚拟机,并且在服务器重新启动后,docker 仍在 Windows 模式下运行。

我启用了 Hyper-V 窗口角色和容器角色。Docker 在 Windows 模式下似乎工作正常,我只是无法让它切换到 Linux。

这是我尝试进行切换时执行的 PS:

Install-Module DockerProvider
Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview
Run Code Online (Sandbox Code Playgroud)

(重启机器)

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
Restart-Service docker
Run Code Online (Sandbox Code Playgroud)

当我运行时,docker info它继续显示 OSType: windows。此外,当我查看 Hyper-V 管理器时,我希望看到一个用于运行 Linux 的虚拟机,但没有虚拟机。我认为这可能与问题有关。

jwd*_*y13 6

所以我能够解决这个问题。我目前正在 Windows 2019 服务器上的 Docker 中运行 Linux 容器,但 OSType 仍然显示为 Windows...我想我不应该期望该值会更改为 Linux(在我本地的 Windows 10 机器上,它显示为 OSType: Linux)?

无论如何,以下是我在 Windows 2019 服务器上运行 Linux 容器的步骤:

  1. 通过服务器管理器启用 Hyper-V 和容器 -> 添加角色和功能
  2. 重启服务器
  3. 打开Powershell并运行以下命令

Powershell 脚本:

Install-Module "DockerMsftProvider" -Force
Update-Module "DockerMsftProvider"
Install-Package Docker -ProviderName "DockerMsftProvider" -Update -Force
Run Code Online (Sandbox Code Playgroud)

注意:如果提示安装 Nuget 提供程序,请键入 Y

Set-Content -Value "`{`"experimental`":true`}" -Path C:\ProgramData\docker\config\daemon.json
restart-service docker
Run Code Online (Sandbox Code Playgroud)

这是我找到解决方案的地方:https : //www.b2-4ac.com/lcow-linux-containers-on-windows-server/

  • 这并不完全正确。还需要更进一步。图像需要 Linux 内核才能运行。大多数教程都说使用 LCOW。但它不再受支持。 (2认同)