Windows Server 2016上的Linux Docker容器

在Windows Server 2016上运行Linux Docker容器的方式是什么? 使用Windows的Docker很容易在Windows 10中完成。是唯一的方法来安装Docker Toolbox并忽略内置的容器function?

不幸的是,现在无法轻松安装“Docker for Windows”工具。 这个安装程序提供了一个名为MobyLinux的精简虚拟机,它允许在Windows Server 2016上运行Linux容器。在Docker论坛上您可以find一个hacky安装尝试 (我没有尝试过)。

作为参考,有关“Docker for Windows”的幕后故事有很好的讨论 。

在W2016上可以使用Linux容器。 这有点哈克,但。 用户“ 阿尔戈尔 ” 在这里描述,但我已经复制到这个答案,当然。

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

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

  • 将Windows 10计算机上的C:\Program Files\Docker复制到您的Server 2016框上的C:\Program Files

  • 在W2016框中运行install-windowsfeature hyper-v,containers

  • 将这些registry项复制到一个文件,并将它们导入您的服务器2016年框(注册导入):

– -开始 – –
Windowsregistry编辑器版本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 \系统\ CurrentControlSet \服务\事件日志\应用\ 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”=“Windows服务的Docker”
“对象名” =“本地系统”
“Description”=“运行Docker for Windows后端服务”
– -结束 – –

你可以添加一个条目到currentversion \ run或者一个预定的工作,如果你想让docker for windows.exe自动启动的话。

  • 重新启动计算机并运行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之前,请确保com.docker.service服务com.docker.servicestart-service com.docker.service )正在运行

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

如果在尝试和重build时遇到问题,请查看C:\Program Files\Docker\Docker\Resources\forceremovedocker.ps1文件以查找要删除设置的位置,如C:\programdata 。 我会build议不要运行脚本,因为它删除所有docker相关的东西。 只是使用它的部分。

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

在Hyper-V中创build一个Linux Docker机器

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

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

这个PowerShell脚本创build了一个Docker机器,并将Docker Engine更新为最新版本,以便Windows Docker客户机能够与Linux Docker Engine进行通信。

使用Linux Docker机器

以pipe理员身份打开PowerShellterminal,然后selectLinux Docker机器

 docker-machine env --shell powershell | iex 

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

 docker run -it busybox uname -a