windows container (docker) 容器资料笔记
<p><strong><em>背景</em></strong></p><p>业务需求:简化公司私有云,公有云的部署,尝试寻找更好的,更优化的技术方案替换现有的虚拟机部署方案。</p>
<p>技术背景: .net</p>
<p> </p>
<p><strong><em>Docker </em></strong><strong><em>学习资料</em></strong></p>
<p>Docker中文社区: http://www.docker.org.cn</p>
<p>微软docker文章:http://ruby-china.org/topics/27156</p>
<p>微软docker官方文档: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon</p>
<p>Windows container部署还要学习下powershell (百度下学习资料)</p>
<p> </p>
<p><strong><em>Windows container Docker </em></strong><strong><em>案例</em></strong></p>
<p>携程.net 容器案例: https://segmentfault.com/a/1190000008169749</p>
<p>(.net 案例真的很少很少)</p>
<p> </p>
<p>携程案例:http://geek.csdn.net/news/detail/64295</p>
<p>Docker 应用案例: http://www.docker.org.cn/docker/122.html</p>
<p>除了以上的案例外,自然还有非常多案例,但是基本都是java的!</p>
<p> </p>
<p><strong><em>Docker </em></strong><strong><em>常用命令</em></strong></p>
<p>参考资料:http://blog.csdn.net/zhang__jiayu/article/details/42611469</p>
<p>(可百度搜索更多)</p>
<p>容器生命周期管理 — docker </p>
<p>容器操作运维 — docker </p>
<p>容器rootfs命令 — docker </p>
<p>镜像仓库 — docker </p>
<p>本地镜像管理 — docker </p>
<p>其他命令 — docker </p>
<p align="left"> </p>
<p><strong><em>Windows container (Docker) </em></strong><strong><em>安装</em></strong></p>
<p>参考文章: http://www.bubuko.com/infodetail-1765950.html</p>
<p>微软文章: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon</p>
<p> </p>
<p>1、安装Container Feature,容器功能角色</p>
<p>可以使用UI,当然也可以用PowerShell:</p>
<p>Install-WindowsFeature containers</p>
<p>Restart-Computer -Force</p>
<p>由于容器本身可以跑在物理机或者虚拟机中,可以顺便把Hyper-V也装了。</p>
<p>2、安装Docker</p>
<p>可以很炫的用PowerShell来拉取Docker引擎:</p>
<p>Invoke-WebRequest "https://get.docker.com/builds/Windows/x86_64/docker-1.12.1.zip" -OutFile "$env:TEMP\docker-1.12.1.zip" –UseBasicParsing</p>
<p>默认解压到C:\Program Files\Docker</p>
<p>Expand-Archive -Path "$env:TEMP\docker-1.12.1.zip" -DestinationPath $env:ProgramFiles</p>
<p>当然,你手动用浏览器什么的https://get.docker.com/builds/Windows/x86_64/docker-1.12.1.zip 下载了自己解压也是没问题的。</p>
<p>然后要配置路径的环境变量:</p>
<p>如果是临时测试,可以用:</p>
<p>$env:path += ";c:\program files\docker"</p>
<p>马上就可以继续后续的PowerShell命令。</p>
<p>如果以后还要用,那就:</p>
<p>::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", ::Machine)</p>
<p>重新打开PowerShell。</p>
<p>当然,也可以用传统的CMD Set Path=。。。。来配置。</p>
<p>接下来就要注册Docker Deamon服务了,然后启动docker服务。</p>
<p>dockerd --register-service</p>
<p>Start-Service docker</p>
<p> </p>
<p><strong>Windows container Docker </strong><strong>镜像安装</strong></p>
<p> </p>
<p>.net(或者说windows) 下面可选择的基础镜像容器操作系统: windows server core 和 nanoserver</p>
<p>Linux等其他平台的镜像比较多</p>
<p>参考: https://hub.docker.com/explore/</p>
<p> </p>
<p>而Windows 镜像其实不多</p>
<p>参考:https://hub.docker.com/r/microsoft/</p>
<p>阿里云的镜像服务(国内下载快一些):https://dev.aliyun.com/</p>
<p> </p>
<p>来源网上的文章描述:</p>
<p>很多朋友都问过这个问题:我是不是可以在<strong>Windows</strong>容器服务中运行Linux应用,或者反过来。<strong>Docker</strong>很厉害,但还木有辣么厉害。你无法在<strong>Windows</strong>上直接运行Linux进程,同样你也无法在<strong>Windows</strong> Container中运行Linux进程。这个情况对于以上提到的2中运行时都适用,无论哪种运行时模型,底层操作系统都是<strong>Windows</strong>,所以你无法运行Linux进程。</p>
<p align="left">这同样意味着,当前<strong>Docker</strong> Hub上面的大量镜像无法在<strong>Windows</strong> Container 中使用。微软已经开始在<strong>Docker</strong> Hub上提供<strong>Windows</strong>容器镜像,你可以使用同样的<strong>docker</strong> pull命令或者去这些镜像。比如:microsoft/windowservercore 镜像是一个完整的服务器镜像(大概3G大小),在这个镜像中你可以使用标准的msi安装包,通过Dockerfile来构建你自己镜像,可以安装和运行完整的.net framework和其他的<strong>Windows</strong>应用程序。microsoft/nanoserver 镜像则是一个精简版的操作系统镜像(大概300M),不提供msi支持,只能运行.net core应用,同时需要使用powershell进行管理。</p>
<p> </p>
<p><strong>Windows container Docker </strong><strong>镜像制作</strong></p>
<p>Windows 镜像其实不多,这些可以用来做基础的镜像</p>
<p>参考:https://hub.docker.com/r/microsoft/</p>
<p>阿里云的镜像服务:https://dev.aliyun.com/</p>
<p> </p>
<p>Dockfile 镜像制作(建议百度获取更多)</p>
<p>http://www.jb51.net/article/105333.htm</p>
<p>https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile</p>
<p> </p>
<p>微软制作的一些镜像的脚本</p>
<p>https://github.com/Microsoft/Virtualization-Documentation</p>
<p> </p>
<p>网上参考的镜像制作的文章</p>
<p>Node.js镜像 http://chuansong.me/n/509677751556</p>
<p>DoNet Core 镜像 http://www.cnblogs.com/ylsforever/p/5736227.html</p>
<p> </p>
<p><strong>Docker </strong><strong>私有仓库建设</strong></p>
<p>微软的仓库或者阿里云的仓库下载docker速度依然是慢,慢,慢。必须要自建仓库!</p>
<p>貌似网上没有windows 的docker搭建私有仓库的例子!貌似有ubuntu, 具体百度吧!</p>
<p> </p>
<p><strong>Docker </strong><strong>编排</strong></p>
<p>参考文章:http://www.alauda.cn/2015/09/14/containers-docker-windows-and-trends/</p>
<p>容器编排比较: http://www.infoq.com/cn/news/2017/02/compare-container-orchestration</p>
<p>容器编排比较2:http://www.d1net.com/cloud/news/382913.html</p>
<p>携程.net 容器案例: https://segmentfault.com/a/1190000008169749</p>
<p> </p>
<p>携程的案例:Mesos和Kubernetes (似乎涉及代码的改造)</p>
<p>Swarm据说支持windows docker。</p>
<p>微软官方貌似没有 windows container 容器编排的工具支持。</p>
<p> </p>
<p><strong>总结</strong></p>
<p>总体windows container的技术发展尚处于前期,很多的资料和工具尚且没有配套的解决方案(整体部署颠覆原有windows的部署方式,需要采用powershell工具),没有成熟的企业商用案例分享,甚至windows server core和nanoserver 的基础镜像都要下载个大半天(镜像生态似乎只有微软的贡献,没有第三方提交),甚至经常断线(国内也没有私有镜像服务)。</p>
<p>Nanoserver 基础镜像 比较适合.net core的方式部署。(大约200-300M)</p>
<p>Windowservercore 基础镜像 比较适合 windows 旧的应用程序。(大约2-4G)</p>
<p> </p>
<p>相反linux docker容器发展相对成熟很多,具体应用案例证明这些(百度下一些大公司的分享),上手更加容易(本身linux 常用shell脚本部署的),围绕linux的容器生态(编排工具,解决方案等),更贴合作为linux开发运维的部署的简化和完善补充。</p>
<p> </p>
<p>虽然windows container 目前还不成熟,但是相信windows container的会继续发展,我们依旧要持续保持关注,以便未来能够真正落地,应用到公司的项目中简化运维部署。</p>
<p> <br>
</p>
<p>
<strong>另外: 目前本人windows 上面也没有成功运行过docker,因为微软镜像下载真的很慢很慢,而且很不稳定。(也许是公司网络原因)</strong></p>
<p><strong> 欢迎有windows docker 经验的人员留言交流,tks!!!</strong></p>
</div>
<div id="MySignature" role="contentinfo">
开源是一种态度,分享是一种精神,学习仍需坚持,进步仍需努力,.net生态圈因你我更加美好。<br><br>
来源:https://www.cnblogs.com/chejiangyi/p/6496773.html
頁:
[1]