【问题标题】:Linux Docker container on Windows Server 2016Windows Server 2016 上的 Linux Docker 容器
【发布时间】:2017-04-21 03:04:30
【问题描述】:

在 Windows Server 2016 上运行 Linux docker 容器的方法是什么?使用 Docker for Windows 很容易在 Windows 10 中完成。是安装 Docker Toolbox 并同时忽略内置容器功能的唯一方法吗?

【问题讨论】:

  • 你解决了这个问题吗?

标签: docker windows-server-2016


【解决方案1】:

可以在 W2016 上使用 Linux 容器。虽然有点hacky。用户“Algore”描述了它here,但我当然将它复制到了这个答案中。

  • 下载“Docker for Windows”:https://docs.docker.com/docker-for-windows/

  • 在 Windows 10 Pro 上安装“Docker for Windows”。

  • C:\Program Files\Docker 从 Windows 10 机器复制到 Server 2016 机器上的 C:\Program Files

  • 在 W2016 盒子上运行 install-windowsfeature hyper-v,containers

  • 将这些注册表项复制到一个文件中,然后将它们导入您的 Server 2016 框(reg 导入):

---开始---
Windows 注册表编辑器 5.00 版

[HKEY_LOCAL_MACHINE\SOFTWARE\Docker Inc.]

[HKEY_LOCAL_MACHINE\SOFTWARE\Docker Inc.\Docker]

[HKEY_LOCAL_MACHINE\SOFTWARE\Docker Inc.\Docker\1.0]
"AppPath"="\"C:\Program Files\Docker\Docker\Docker for Windows.exe\""
"BinPath"="\"C:\Program Files\Docker\Docker\resources\bin\""

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\DockerService]
"EventMessageFile"=hex(2):43,00,3a,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,\ 00,73,00,5c,00,4d,00,69,00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,2e,00, \ 4e,00,45,00,54,00,5c,00,46,00,72,00,61,00,6d,00,65,00,77,00,6f,00,72,00,6b, \ 00,36,00,34,00,5c,00,76,00,34,00,2e,00,30,00,2e,00,33,00,30,00,33,00,31,00, \ 39,00,5c,00,45,00,76,00,65,00,6e,00,74,00,4c,00,6f,00,67,00,4d,00,65,00,73, \ 00,73,00,61,00,67,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\com.docker.service] “类型”=dword:00000010 “开始”=dword:00000002 “错误控制”=dword:00000000 "ImagePath"=hex(2):22,00,43,00,3a,00,5c,00,50,00,72,00,6f,00,67,00,72,00,61,00,\ 6d,00,20,00,46,00,69,00,6c,00,65,00,73,00,5c,00,44,00,6f,00,63,00,6b,00,65, \ 00,72,00,5c,00,44,00,6f,00,63,00,6b,00,65,00,72,00,5c,00,63,00,6f,00,6d,00, \ 2e,00,64,00,6f,00,63,00,6b,00,65,00,72,00,2e,00,73,00,65,00,72,00,76,00,69, \ 00,63,00,65,00,22,00,00,00
"DisplayName"="Docker for Windows 服务"
"ObjectName"="LocalSystem"
"Description"="为 Windows 后端服务运行 Docker"
---结束---

如果您希望 docker for windows.exe 自动启动,您可以在 currentversion\run 或计划作业中添加条目。

  • 重启电脑,运行PowerShell脚本C:\Program Files\Docker\Docker\Resources\mobylinuxvm.ps1 -Create

查看这个 ps1 文件并注意您可以设置各种选项。请参考以下网站:

https://docker-saigon.github.io/post/Docker-Beta/
https://jpetazzo.github.io/2013/10/16/configure-docker-bridge-network/

  • 在启动C:\Program Files\Docker\Docker for Windows.exe之前确保docker服务com.docker.servicestart-service com.docker.service)正在运行

如果你在服务器核心上运行并且没有托盘图标,在开始进入设置后出现通知时点击“更改隐私设置”(或修改programdata中的json)

如果您在尝试和重建时遇到问题,请查看 C:\Program Files\Docker\Docker\Resources\forceremovedocker.ps1 文件以获取删除设置的位置,例如 C:\programdata。我建议不要运行该脚本,因为它会删除所有与 docker 相关的内容。只使用它的一部分。

【讨论】:

  • 我按照这些步骤运行了 docker for windows,但是由于某种原因,bin 路径没有被拾取,我无法在 cmd 中运行“docker”或“docker-compose” .除非我明确导航到该文件夹​​,否则无法识别这些命令。有什么想法吗?
  • CLI 工具是单独安装的。 Docker Engine releases 和 Docker Compose releases 在 GitHub 上可用。
  • 什么意思,单独安装? CLI 工具作为 Docker for Windons 安装的一部分就在“C:\Program Files\Docker\Docker\resources\bin\”下。最后,我只是将 bin 文件夹添加到我的 $PATH 环境变量中。现在工作正常。
  • 现在 Docker Desktop 使用 WSL 而不能在 Windows Server 2016 上运行(没有文件 mobylinuxvm.ps1,没有 iso 文件)
【解决方案2】:

根据 Stefan Scherer 的 this,可以在 Server 2016 上运行 Linux 容器。说明如下:

在 Hyper-V 中创建 Linux Docker 机器

如果你想尝试多架构,你也可以使用 docker-machine 创建在 Hyper-V 中运行的 Linux Docker 引擎。我准备了一个 脚本将设置所有内容,因为存在一些已知问题。

C:\vagrant\scripts\create-hyperv-linux-docker-machine.ps1

此 PowerShell 脚本创建 Docker 机器并更新 Docker 引擎到最新版本,以便 Windows Docker 客户端能够 与 Linux Docker 引擎通信。

使用 Linux Docker 机器

以管理员身份打开 PowerShell 终端并选择 Linux Docker 机器与

docker-machine env --shell powershell | iex

现在运行你的第一个 busybox 容器

docker run -it busybox uname -a

【讨论】:

  • Windows Server 2016哪个版本,希望你说的是1609。
  • 此脚本也在 PowerShell 中给出错误: grep : 术语 'grep' 未被识别为 cmdlet 的名称
【解决方案3】:

不幸的是,目前无法轻松安装“Docker for Windows”工具。此安装程序提供了一个名为 MobyLinux 的瘦 VM,它允许在 Windows Server 2016 上运行 Linux 容器。您可以在 Docker 论坛上找到hacky install attempt(我没有尝试过)。

作为参考,有一个 good discussion 关于“Docker for Windows”幕后发生的事情。

【讨论】:

  • 现在可以了,虽然不是简单的安装。请参阅以下answer
  • @Boggin 这就是我在回答中提到的“骇客安装尝试”。
【解决方案4】:

以下内容适用于 Windows Server 2016 内部版本 14393.693(2017 年 1 月),没有任何变通办法。

它可能适用于更高/更低的版本,但我尝试在最近更新的 Windows Server 2016 版本上进行复制,但失败了!感觉这个洞必须补上!

2019-02-15下载Docker社区版2.0.0.3

链接:https://download.docker.com/win/stable/31259/Docker%20for%20Windows%20Installer.exe

所有版本的页面:https://docs.docker.com/docker-for-windows/release-notes/

只需将文件下载/复制到 Windows Server 2016 机器并运行它。

对于气隙系统,它也可以离线运行。

在安装过程中取消选中“使用 Windows 容器”。默认不勾选。

安装后您会收到一条消息,说 Windows 某某已被弃用。单击确定。在此处输入图像描述 退出并重新登录。

如果您尚未安装 Hyper-V,它会提示您自动安装。允许它,让它完成并重新启动。你现在可以走了。如果无法切换到 Linux,您可能需要重新启动。

我已经通过运行多个 Linux 容器对此进行了测试,它运行良好。如果我缺少某些东西,请为他人的利益分享。缺点是您无法更新到更高版本的 Docker。

【讨论】:

    【解决方案5】:

    只需在 Windows Server 2016 https://www.docker.com/docker-windows 上下载并安装 Docker
    如果您使用 Hyper-V 将 Windows Server 2016 作为 VM 运行,请务必查看此 MS 文档 https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/nested-virtualization

    【讨论】:

      猜你喜欢
      • 2019-12-10
      • 2021-02-28
      • 2021-06-07
      • 2018-09-17
      • 2016-10-24
      • 2021-11-04
      • 2019-11-23
      • 2018-04-24
      • 2017-04-22
      相关资源
      最近更新 更多