创建Windows 2016 TP5 Docker本地虚拟机
《创建Windows 2016 TP5 Docker本地虚拟机》要点: 继Windows 2016 TP5上的Docker初次体验之后,作者接着写了这篇创建本地虚拟机的文章,给出了Packer和Vagrant的用法,并详细说明了Packer的功能. 越来越多的人开始试用Windows Docker容器,这太棒了.无论是想了解Windows上所运行的Docker引擎的当前状态,还是想亲身体验一下Windows容器来,最新的Windows Server 2016 Technical Preview 5都是一个很好的起点. 不久就会有很容易上手的微软Azure模板.一旦这个补丁被合并,就意味着用户可以很容易地在Azure上创建Docker Machine. 教程目前而言,创建本地的VM还是需要花费一点时间和精力的.有一些不错的教程可以指导你完成必要步骤.
Packer + Vagrant = Automation如果你不想全部采用手工方式完成创建工作,在你的计算机面前等待下一步操作提示,你也可以用Packer和Vagrant. Packer使用ISO文件作为输入,制作用于Vagrant环境的基本虚拟机.使用Vagrant,你可以启动一个或者多个这样的虚拟机,甚至可以形成一个Windows Docker Swarm集群. 本文所使用的Packer模板可以用来创建含有Docker Engine的Windows 2016 TP5 虚拟机.这个模板已经用VirtualBox 5.0.20 和 VMware Fusion 8.1测试过.如果你用的是Windows系统,模板应该也可以在 VMware Workstation上使用. 运行Packer使用Packer 0.10.0创建Vagrant基本虚拟机,只需要克隆下面的GitHub repo(https://github.com/StefanScherer/packer-windows). git?clone?https://github.com/StefanScherer/packer-windows?? cd?packer-windows 然后为VMware创建Vagrant基本虚拟机: packer?build?--only=vmware-iso?windows_2016_docker.json 或者为VirtualBox创建Vagrant基本虚拟机: packer?build?--only=virtualbox-iso?windows_2016_docker.json 这个过程大概要花上一个小时. 上述步骤完成之后,当前路径中应该就会有一个box文件.将该文件添加到Vagrant: vagrant?box?add?windows_2016_tp5_docker?windows_2016_docker_vmware.box 如果你既有VirtualBox环境,也有VMware环境,你也可以为这两种环境分别创建和添加基本虚拟机.你可以列出所有的base box: $?vagrant?box?list windows_2016_tp5_docker?(virtualbox,?0)?? windows_2016_tp5_docker?(vmware_desktop,?0) 运行Vagrant现在你可以使用新的基本虚拟机来执行一些测试工作了.这里,我们需要访问另一个GitHub repo(https://github.com/StefanScherer/docker-windows-box).第一步是克隆代码: git?clone?https://github.com/StefanScherer/docker-windows-box?? cd?docker-windows-box 使用Vagrant 1.8.1,可以很容易地启动虚拟机,并让Docker在Windows 2016 TP5上运行: vagrant?up Vagrant启动VM,安装其它的Docker工具(如Machine和Compose).同时也安装Git以便访问一些在Github(https://github.com/brogersyh/Dockerfiles-for-windows)上的Windows Dockerfile. 你可以打开PowerShell来执行一些命令,例如: docker?version?? docker?images 恭喜你!你现在可以用Windows 2016 TP5上的全新Docker引擎开始工作了! Packer能做什么如果你想了解Packer在自动创建虚拟机的过程中做了什么,下面列出了Packer所运行的一些部署脚本. 安装功能组件在脚本文件enable-winrm.ps1中,在打开WinRM端口让Packer登录和进行进一步准备之前,将启用一些Windows配置,如Container支持和Hyper-V(仅针对VMware)支持. 安装Docker下一个脚本install-docker.ps1,用来安装Docker服务、Docker客户端和名为windowsservercore的Docker基础镜像.如果Hyper-V已启用,也会安装名为nanoserver的Docker基础镜像 . 修补windowsservercore镜像因为TP5和相关的文件以及镜像很新,并且还是预发布版本,保不定哪儿还有点问题. 目前我们需要这个脚本来为windowsservercore Docker镜像提速.脚本patch-boot-time-for-containers.ps1就是用来处理这个问题的. 启用不安全的Docker端口2375在本地的测试环境,我们用脚本enable-docker-insecure.ps1打开不安全的Docker端口2375. 你可以从运行该虚拟机的主机上远程控制Windows Docker引擎.平时使用Linux或者Mac的人更该尝试一下. 一旦将来有了本地Windows VM的Docker Machine驱动程序,我更倾向于使用它来建立安全的TLS连接. 添加Docker群组新的Windows Docker引擎会在一个Windows命名管道上监听消息,这与在Linux系统上监听 Unix套接字很相似. 普通用户不能访问这一命名管道,所以需要使用管理员Shell来操控Docker引擎. 脚本add-docker-group.ps1将选项-G docker添加到Docker引擎的启动命令,这样Windows用户组docker里的所有成员就都具有了访问命名管道的权限. 该脚本还在用户vagrant添加到这个docker用户组.所以,在Vagrant虚拟机中你就可以打开一个普通的PowerShell窗口来操控Docker引擎了. 删除 key.json最后一个脚本remove-docker-key-json.ps1负责删除初始安装的key.json文件.在第一次启动运行Docker引擎时,每个Vagrant虚拟机中都会创建这个文件,并且根据不同Docker引擎创建不同的ID. 如果你想要构建一个Windows Docker Swarm集群,记得每个Docker引擎都需要一个不同的ID. 结论由于Docker基础镜像和Docker引擎会持续更新,用Packer和Vagrant自动重建基本虚拟机就简单多了,不再需要执行那些手工操作的步骤. 如果这篇文章对你有用,请分享给朋友和同事.如果你有问题或更好的建议,请留下评论.你还可以在推特@stefscherer(https://twitter.com/stefscherer)关注我. 感谢滕启明对文章的审校. 马远征?译 英文链接:https://stefanscherer.github.io/setup-local-windows-2016-tp5-docker-vm/#rd 原文出处:Docker微信公众号 (编辑:ASP站长网) |