Windows Server 2016上的Linux Docker容器

Nat*_*lia 12 docker windows-server-2016

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

Bog*_*gin 7

可以在W2016上使用Linux容器.虽然有点hacky.用户" Algore " 在这里描述了它,但我当然已将其复制到这个答案中.

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

  • 在Windows 10 Pro上安装"Docker for Windows".

  • C:\Program Files\Docker从Windows 10计算机复制到C:\Program FilesServer 2016 计算机上.

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

  • 将这些注册表项复制到文件并将其导入Server 2016框(reg import):

--- START ---
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 \泊坞窗\泊坞窗\资源\ 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]"Type"= dword:00000010"Start"= dword:00000002"ErrorControl"= 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 Service"
"ObjectName"="LocalSystem"
"Description"="运行Docker for Windows后端服务"
--- END ---

如果希望dock.exe 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/

  • 在开始之前确保docker service com.docker.service(start-service com.docker.service)正在运行C:\Program Files\Docker\Docker for Windows.exe

如果您在服务器核心上运行但没有托盘图标,请在开始进行设置后通知出现时单击"更改隐私设置"(或修改programdata中的json)

如果您在尝试和重建时遇到问题,请检查C:\Program Files\Docker\Docker\Resources\forceremovedocker.ps1文件中是否有删除设置的位置,例如C:\programdata.我建议不要运行脚本,因为它删除了所有与docker相关的东西.只需使用它的一部分.


小智 5

根据这个从斯特凡舍雷尔有可能服务器在2016年运行Linux容器中的指令是:

在Hyper-V中创建Linux Docker机器

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

C:\vagrant\scripts\create-hyperv-linux-docker-machine.ps1
Run Code Online (Sandbox Code Playgroud)

此PowerShell脚本创建Docker机器并将Docker Engine更新到最新版本,以便Windows Docker客户端能够与Linux Docker Engine进行通信.

使用Linux Docker机器

以管理员身份打开PowerShell终端,然后选择Linux Docker机器

docker-machine env --shell powershell | iex
Run Code Online (Sandbox Code Playgroud)

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

docker run -it busybox uname -a
Run Code Online (Sandbox Code Playgroud)


Wil*_*man 4

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

作为参考,有一个关于“Docker for Windows”幕后发生的事情的很好的讨论。