相信你们对于Docker这项技术都有必定了解了,Container是一种轻量级的解决方案,很是适合将传统windows平台上的无状态服务迁移上去(相对于VM虚拟化更加可以提升总体资源利用率),加上微软的大部分技术架构都是能够整合的,而采用linux下的docker整合起来效果并非特别好(好比我曾经尝试着用scom监控linux下Container,虽然成功了可是效果并非很好),因此对于Windows平台的Docker我就更加期待了。今天我就把近一段时间一直零零散散作的一些小demo来作个汇总。 linux
(图为微软Container示意图)nginx
在开始以前,先啰嗦几句:docker
因为目前Windows Container仍处于TP3阶段(技术预览),因此存在Bug是正常的,如下是官方的原话:windows
Remember, this is a preview there are bugs and we have a lot of work in progress. This page contains many of our known issues.Be aware that there are some known Docker commands that don't work and some that only partially work架构
简单翻译下,其实就是一句话:“没有Bug才不正常呢”,因此千万别在生产环境试水Windows Container(至少等到发布)app
今天这个实验的目录是经过Windows Container建立一个Nginx Container(至于为何不建立IIS Container,后面有讲述),仅做实验参考。ide
一、 新建Windows Server Container:测试
二、 输入相关配置信息后建立完成,注意咱们这里先映射出8001端口做为测试端口用:ui
三、 建立完成后,链接到Docker Host上,使用wget -uri 'http://nginx.org/download/nginx-1.9.3.zip' -OutFile "c:\nginx-1.9.3.zip"获取源码nginx部署包,而后建立Dockerfile,new-item -Type File c:\docker\nginx\dockerfile:this
四、 使用Expand-Archive -Path C:\nginx-1.9.3.zip -DestinationPath C:\docker\nginx\source –Force将源码解压到咱们建立的目录上,待会儿dockerfile会调用到:
五、 使用notepad.exe c:\docker\nginx\dockerfile开始编写dockerfile内容:
FROM windowsservercore
LABEL Description="nginx For Windows" Vendor="nginx" Version="1.9.3"
ADD source /nginx
六、 而后使用docker build -t nginx_windows C:\docker\nginx开始使用dockerfile建立nginx p_w_picpaths:
七、 接着咱们就能够在p_w_picpaths中看到咱们刚刚建立的p_w_picpath:
八、 咱们就可使用docker run -it --name VMC-NGC01 -p 8001:80 nginx_windows cmd调用刚刚建立的p_w_picpaths去建立Container了,建立后以下:
九、 建立完成后是直接会进入Container里面的,在Container下运行cd c:\nginx\nginx-1.9.3进入nginx主目录,并使用start nginx启动服务:
十、 接着咱们访问下站点页面,因为咱们没有建立主页,因此访问为403(能够看到我并无使用8001),然而我并无找到好的方法能够修改到nginx.conf这个文件(请见Bug列表):
一、 在不一样平台的Docker上搜索IIS p_w_picpaths:
a、Windows Container下搜索:
b、而在Linux Container下搜索IIS是这样的(虽然多是由于Docker镜像库不一样,不过就算修改了Linux上的镜像库,我认为应该不能正常在Linux Docker上进行运行):
二、 不知道什么缘由,部署IIS Container1老是失败的:
a、使用Images方式建立(在端口映射正确的前提下,虽然成功建立,且Container中的iis服务正常,而且还手动建立了IIS站点并开启,仍然没法访问):
b、即便是使用微软GitHub上的DockerFile+PowerShell脚本建立,仍然是有问题的(采用了最新版本的TP3 Container及10月份的最新脚本):
一、 映射端口没法生效,好比上述例子用了8001映射Container的80端口,然而8001端口并无生效。
二、 映射端口并不会出如今docker ps中(能够用Get-NetNatStaticMapping):
三、 进入部分docker container中运行命令常常出现卡死状况(命令没法跳到下一行),好比打开某些文本文件时:
四、 目前windows container的Container名字仍是大小写敏感的(这点跟linux版无异,不知道算不算bug)
最近听了台湾的MS专家冯立伟老师关于Windows Container的课后,更加印证了我以前的想法,未来的架构极有多是
固然一切还得等Hyper-V Container出来,让咱们一块儿期待。
因为最近博主正在为自家公司部署VMCloud Plus版本,因此更新周期变长了,可是,只要发现新奇玩意儿,博主都会不断去实践,即便进度很慢,即便困难不少,也会坚持完成,借此来感谢各位的关注:)
职场巅峰之路(已更新)
VMCloud-OPC