业务需求:简化公司私有云,公有云的部署,尝试寻找更好的,更优化的技术方案替换现有的虚拟机部署方案。
技术背景: .net
Docker 学习资料
Docker中文社区:
微软docker文章:
微软docker官方文档: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon
Windows container部署还要学习下powershell (百度下学习资料)
Windows container Docker 案例
携程.net 容器案例: https://segmentfault.com/a/1190000008169749
(.net 案例真的很少很少)
携程案例:
Docker 应用案例:
除了以上的案例外,自然还有非常多案例,但是基本都是java的!
Docker 常用命令
参考资料:
(可百度搜索更多)
容器生命周期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操作运维 — docker [ps|inspect|top|attach|events|logs|wait|export|port]
容器rootfs命令 — docker [commit|cp|diff]
镜像仓库 — docker [login|pull|push|search]
本地镜像管理 — docker [images|rmi|tag|build|history|save|import]
其他命令 — docker [info|version]
Windows container (Docker) 安装
参考文章:
微软文章: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon
1、安装Container Feature,容器功能角色
可以使用UI,当然也可以用PowerShell:
Install-WindowsFeature containers
Restart-Computer -Force
由于容器本身可以跑在物理机或者虚拟机中,可以顺便把Hyper-V也装了。
2、安装Docker
可以很炫的用PowerShell来拉取Docker引擎:
Invoke-WebRequest "http://www.mamicode.com/https:/get.docker.com/builds/Windows/x86_64/docker-1.12.1.zip" -OutFile "$env:TEMP\docker-1.12.1.zip" –UseBasicParsing
默认解压到C:\Program Files\Docker
Expand-Archive -Path "$env:TEMP\docker-1.12.1.zip" -DestinationPath $env:ProgramFiles
当然,你手动用浏览器什么的https://get.docker.com/builds/Windows/x86_64/docker-1.12.1.zip 下载了自己解压也是没问题的。
然后要配置路径的环境变量:
如果是临时测试,可以用:
$env:path += ";c:\program files\docker"
马上就可以继续后续的PowerShell命令。
如果以后还要用,那就:
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)
重新打开PowerShell。
当然,也可以用传统的CMD Set Path=。。。。来配置。
接下来就要注册Docker Deamon服务了,然后启动docker服务。
dockerd --register-service
Start-Service docker
Windows container Docker 镜像安装
.net(或者说windows) 下面可选择的基础镜像容器操作系统: windows server core 和 nanoserver
Linux等其他平台的镜像比较多
参考: https://hub.docker.com/explore/
而Windows 镜像其实不多
参考:https://hub.docker.com/r/microsoft/
阿里云的镜像服务(国内下载快一些):https://dev.aliyun.com/
来源网上的文章描述:
很多朋友都问过这个问题:我是不是可以在Windows容器服务中运行Linux应用,或者反过来。Docker很厉害,但还木有辣么厉害。你无法在Windows上直接运行Linux进程,同样你也无法在Windows Container中运行Linux进程。这个情况对于以上提到的2中运行时都适用,无论哪种运行时模型,底层操作系统都是Windows,所以你无法运行Linux进程。
这同样意味着,当前Docker Hub上面的大量镜像无法在Windows Container 中使用。微软已经开始在Docker Hub上提供Windows容器镜像,你可以使用同样的docker pull命令或者去这些镜像。比如:microsoft/windowservercore 镜像是一个完整的服务器镜像(大概3G大小),在这个镜像中你可以使用标准的msi安装包,通过Dockerfile来构建你自己镜像,可以安装和运行完整的.net framework和其他的Windows应用程序。microsoft/nanoserver 镜像则是一个精简版的操作系统镜像(大概300M),不提供msi支持,只能运行.net core应用,同时需要使用powershell进行管理。
Windows container Docker 镜像制作
Windows 镜像其实不多,这些可以用来做基础的镜像
参考:https://hub.docker.com/r/microsoft/
阿里云的镜像服务:https://dev.aliyun.com/
Dockfile 镜像制作(建议百度获取更多)
https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile
微软制作的一些镜像的脚本
https://github.com/Microsoft/Virtualization-Documentation
网上参考的镜像制作的文章
Node.js镜像
DoNet Core 镜像
Docker 私有仓库建设
微软的仓库或者阿里云的仓库下载docker速度依然是慢,慢,慢。必须要自建仓库!
貌似网上没有windows 的docker搭建私有仓库的例子!貌似有ubuntu, 具体百度吧!
Docker 编排
参考文章:
容器编排比较:
容器编排比较2:
携程.net 容器案例: https://segmentfault.com/a/1190000008169749
携程的案例:Mesos和Kubernetes (似乎涉及代码的改造)
Swarm据说支持windows docker。
微软官方貌似没有 windows container 容器编排的工具支持。
总结