转载

创建Windows 2016 TP5 Docker本地虚拟机

---

【编者的话】继 Windows 2016 TP5上的Docker初次体验 之后,作者接着写了这篇创建本地虚拟机的文章,给出了Packer和Vagrant的用法,并详细说明了Packer的功能。

越来越多的人开始试用Windows Docker容器,这太棒了。最新的Windows Server 2016 Technical Preview 5对当前在Windows上运行的Docker引擎和链接Windows容器来说都是一个很好的起点。

很快就会有很容易上手的微软Azure模板。另外,一旦合并了pull request,在Azure中创建Docker机也将非常简单。

教程

不过选择还是要花费一点时间和经历来创建这么一个本地虚拟机。有一些好的教程可以知道你完成必要步骤。

  • 在Windows Server 2016 VirtualBox中创建Docker
  • Hyper-V中的Windows Docker 容器

Packer + Vagrant = Automation

如果你不想手动做这些创建工作,你也可以用Packer和Vagrant.

Packer 使用ISO文件,制作Vagrant的base box虚拟机.你可使用Vagrant启动一个或者多个这样的虚拟机,甚至可以形成一个Windows Docker集群。

Packer模板可以创建含有Docker引擎的Windows 2016 TP5 虚拟机,这个模板已经用VirtualBox 5.0.20 和 VMware Fusion 8.1测试过,如果你用的是Windows系统的电脑,应该也可以在 VMware Workstation上使用。

运行 Packer

使用Packer 0.10.0创建Vagrant base box,仅需复制 GitHub repo .

git clone https://github.com/StefanScherer/packer-windows  
cd packer-windows

然后在VMware创建Vagrant base box。

packer build --only=vmware-iso windows_2016_docker.json  

或者在VirtualBox上创建Vagrant base box。

packer build --only=virtualbox-iso windows_2016_docker.json  

这个过程大概要花上一个小时。

创建Windows 2016 TP5 Docker本地虚拟机

之后当前路径中应该就会有一个box文件。将该文件添加到Vagrant:

vagrant box add windows_2016_tp5_docker windows_2016_docker_vmware.box  

如果你有虚拟机管理程序,你也可以创建和添加base box。你可以列出所有的base box:

$ vagrant box list
windows_2016_tp5_docker (virtualbox, 0)
windows_2016_tp5_docker (vmware_desktop, 0)

运行 Vagrant

现在你可以使用新的base box了。这是 另一个GitHub 的repo。我们只要用以下方式复制:

git clone https://github.com/StefanScherer/docker-windows-box  
cd docker-windows-box

使用Vagrant1.8.1,启动虚拟机,让Docker在Windows 2016 TP5上运行,十分简单。

vagrant up

Vagrant打开VM,安装Docker工具(如Machine和Compose)。同时也安装了Git用来链接 一些 在 Github 上的Windows Dockerfile。

创建Windows 2016 TP5 Docker本地虚拟机

你可以打开PowerShell,运行一个例子:

docker version  
docker images
创建Windows 2016 TP5 Docker本地虚拟机

恭喜你!你现在可以用Windows 2016 TP5上的全新Docker引擎开始工作了!

玩的开心哟~

Packer能做什么

如果你想了解Packer在自动创建虚拟机的过程中做了什么,这里列出了Packer运行的脚本。

安装配置

在脚本文件 enable-winrm.ps1 中,在打开WinRM端口让Packer登录和进行进一步准备之前,将启用一些Windows配置,如COntainer和Hyper——V(VMware)。

安装Docker

下一个脚本 install-docker.ps1 ,用来安装Docker服务、客户端和基于Docker镜像的 windowsservercore 。如果Hyper-V已启用,也会安装基于Docker镜像的 nanoserver

修补windowsservercore镜像

因为TP5和相关的文件以及镜像还是预发布版本,保不定哪儿还有点问题。

目前我们需要 这个脚本 来为 windowsservercore Docker镜像提速。脚本 patch-boot-time-for-containers.ps1 就是用来处理这个问题的。

启用不安全的 Docker 端口 2375

在本地的测试环境,我们用脚本 enable-docker-insecure.ps1 打开不安全的Docker端口2375。

你可以用运行虚拟机的主机远程控制Windows Docker引擎。平时使用Linux或者Mac的人更该尝试一下。

以前有一个本地Windows虚拟机版本的Docker Machine驱动,我更倾向于使用他来建立安全的TLS连接。

添加docker 群组

新的Windows Docker引擎监听一个Windows命名的pipe,它跟Linux Unix的socket很像。

一个普通用户不能访问它,所以要使用Docker引擎需要开一个管理员shell。

脚本 add-docker-group.ps1 将选项 -G docker 添加到Docker引擎,给Windows群组 docker 里的所有成员访问pipe的权限。

该脚本还在群组中添加了 vagrant 用户。所以在Vagrant box 中你用一般权限就可以使用Docker引擎了。

删除 key.json

最后一个脚本 remove-docker-key-json.ps1removes 删掉了初始安装的key.json文件。在第一次运行Docker引擎时还会在各个Vagrant虚拟机中创建该文件,并根据不同Docker引擎创建不同的ID。

如果你想要构建一个Windows Docker集群,记得每个Docker引擎都需要不同的ID。

结论

既然Docker基本镜像和引擎可能会继续更新,用Packer和Vagrant自动重建基础虚拟机就简单多了。

如果这篇文章对你有用,请分享给朋友和同事。如果你有问题或更好的建议,请留下评论。你还可以在推特 @ stefscherer 关注我。

原文链接: Setup a local Windows 2016 TP5 Docker VM (翻译:马远征)

原文  http://dockone.io/article/1275
正文到此结束
Loading...