创建Windows 2016 TP5 Docker本地虚拟机

简介: 本文讲的是创建Windows 2016 TP5 Docker本地虚拟机,【编者的话】继Windows 2016 TP5上的Docker初次体验之后,作者接着写了这篇创建本地虚拟机的文章,给出了Packer和Vagrant的用法,并详细说明了Packer的功能。
本文讲的是创建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
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

这个过程大概要花上一个小时。
packer-build.png

上述步骤完成之后,当前路径中应该就会有一个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 。第一步是克隆代码:
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 上的Windows Dockerfile。
vagrant-up-1.png

你可以打开PowerShell来执行一些命令,例如:
docker version  
docker images

docker-version.png

恭喜你!你现在可以用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 关注我。

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

原文发布时间为:2016-05-08
本文作者:夕口夕 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:创建Windows 2016 TP5 Docker本地虚拟机
目录
相关文章
|
1月前
|
Linux 虚拟化 iOS开发
Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板
Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板
79 29
Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板
|
2月前
|
存储 虚拟化 Docker
Docker Desktop 4.38 安装与配置全流程指南(Windows平台)
Docker Desktop 是容器化应用开发与部署的一体化工具,支持本地创建、管理和运行 Docker 容器。4.38 版本新增 GPU 加速、WSL 2 性能优化和 Kubernetes 1.28 集群管理功能,适用于微服务开发和 CI/CD 流水线搭建。安装要求为 Windows 10 2004 及以上(64 位),需启用 Hyper-V 或 WSL 2。硬件最低配置为 4GB 内存、20GB 存储和虚拟化技术支持的 CPU。安装步骤包括启用系统功能、下载并运行安装程序,完成后配置镜像加速并验证功能。常见问题涵盖 WSL 2 安装不完整、磁盘空间清理及容器外网访问等。
4724 14
|
2月前
|
Linux 虚拟化 Docker
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
267 1
|
4月前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
196 12
|
7月前
|
网络安全 虚拟化 Docker
SSH后判断当前服务器是云主机、物理机、虚拟机、docker环境
结合上述方法,您可以对当前环境进行较为准确的判断。重要的是理解每种环境的特征,并通过系统的响应进行综合分析。如果在Docker容器内,通常会有明显的环境标志和受限的资源视图;而在云主机或虚拟机上,虽然它们也可能是虚拟化的,但通常提供更接近物理机的体验,且可通过硬件标识来识别虚拟化平台。物理机则直接反映硬件真实信息,较少有虚拟化痕迹。通过这些线索,您应该能够定位到您所处的环境类型。
204 2
|
7月前
|
存储 Linux 开发者
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
509 0
虚拟机centos7.9一键部署docker
|
9月前
|
测试技术 持续交付 云计算
Docker 相对于虚拟机的优势
【8月更文挑战第27天】
425 5
|
9月前
|
安全 持续交付 虚拟化
在Docker中,Docker和虚拟机有什么不同?
在Docker中,Docker和虚拟机有什么不同?
|
9月前
|
应用服务中间件 Linux nginx
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
这篇文章讨论了Linux虚拟机磁盘扩容的方法,包括外部配置、具体扩容步骤和扩容后的效果验证。同时,文章还涉及了Docker容器磁盘满的问题及其解决方法,如删除不必要的镜像和容器,以及调整Docker的安装路径。此外,还提到了意外情况的处理,例如误删除停止的容器后的应对措施。最后,文章还提供了使用Docker安装nginx的步骤和成功访问的截图。
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
|
9月前
|
PHP 虚拟化 Docker
Docker——windows10安装Docker Desktop
Docker——windows10安装Docker Desktop
523 1