windows container (docker) 容器资料笔记
背景
业务需求:简化公司私有云,公有云的部署,尝试寻找更好的,更优化的技术方案替换现有的虚拟机部署方案。
技术背景: .net
Docker 学习资料
Docker中文社区: http://www.docker.org.cn
微软docker文章:http://ruby-china.org/topics/27156
微软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 案例真的很少很少)
携程案例:http://geek.csdn.net/news/detail/64295
Docker 应用案例: http://www.docker.org.cn/docker/122.html
除了以上的案例外,自然还有非常多案例,但是基本都是java的!
Docker 常用命令
参考资料:http://blog.csdn.net/zhang__jiayu/article/details/42611469
(可百度搜索更多)
容器生命周期管理 — 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) 安装
参考文章: http://www.bubuko.com/infodetail-1765950.html
1、安装Container Feature,容器功能角色
可以使用UI,当然也可以用PowerShell:
Install-WindowsFeature containers
Restart-Computer -Force
由于容器本身可以跑在物理机或者虚拟机中,可以顺便把Hyper-V也装了。
2、安装Docker
可以很炫的用PowerShell来拉取Docker引擎:
Invoke-WebRequest "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 镜像制作(建议百度获取更多)
http://www.jb51.net/article/105333.htm
微软制作的一些镜像的脚本
https://github.com/Microsoft/Virtualization-Documentation
网上参考的镜像制作的文章
Node.js镜像 http://chuansong.me/n/509677751556
DoNet Core 镜像 http://www.cnblogs.com/ylsforever/p/5736227.html
Docker 私有仓库建设
微软的仓库或者阿里云的仓库下载docker速度依然是慢,慢,慢。必须要自建仓库!
貌似网上没有windows 的docker搭建私有仓库的例子!貌似有ubuntu, 具体百度吧!
Docker 编排
参考文章:http://www.alauda.cn/2015/09/14/containers-docker-windows-and-trends/
容器编排比较: http://www.infoq.com/cn/news/2017/02/compare-container-orchestration
容器编排比较2:http://www.d1net.com/cloud/news/382913.html
携程.net 容器案例: https://segmentfault.com/a/1190000008169749
携程的案例:Mesos和Kubernetes (似乎涉及代码的改造)
Swarm据说支持windows docker。
微软官方貌似没有 windows container 容器编排的工具支持。
总结
总体windows container的技术发展尚处于前期,很多的资料和工具尚且没有配套的解决方案(整体部署颠覆原有windows的部署方式,需要采用powershell工具),没有成熟的企业商用案例分享,甚至windows server core和nanoserver 的基础镜像都要下载个大半天(镜像生态似乎只有微软的贡献,没有第三方提交),甚至经常断线(国内也没有私有镜像服务)。
Nanoserver 基础镜像 比较适合.net core的方式部署。(大约200-300M)
Windowservercore 基础镜像 比较适合 windows 旧的应用程序。(大约2-4G)
相反linux docker容器发展相对成熟很多,具体应用案例证明这些(百度下一些大公司的分享),上手更加容易(本身linux 常用shell脚本部署的),围绕linux的容器生态(编排工具,解决方案等),更贴合作为linux开发运维的部署的简化和完善补充。
虽然windows container 目前还不成熟,但是相信windows container的会继续发展,我们依旧要持续保持关注,以便未来能够真正落地,应用到公司的项目中简化运维部署。
另外: 目前本人windows 上面也没有成功运行过docker,因为微软镜像下载真的很慢很慢,而且很不稳定。(也许是公司网络原因)
欢迎有windows docker 经验的人员留言交流,tks!!!
windows container (docker) 容器资料笔记的更多相关文章
- 在Linux和Windows的Docker容器中运行ASP.NET Core
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...
- Docker 容器学习笔记
Docker 诞生于2013年,最初发起者是dotCloud公司.Docker自开源后受到广泛的关注和讨论,目前已有多个相关项目逐渐形成了围绕Docker容器的生态体系,由于Docker在业界造成的影 ...
- Docker系列之Docker容器(读书笔记)
一.介绍 容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统和排在上面的应用. 二.容器 2.1 启动容器 启动容器有两种方式,一种是基于镜像新建一 ...
- docker容器学习笔记
docker是通过内核虚拟化技术来提供容器的资源隔离与安全保障. docker组成: docker client.docker server.docker组件(镜像(image).容器(contain ...
- 第二篇 windows container 微软的原生容器
先上图,显示windows container的体积: 以下是我使用docker pull 命令下载后,又用命令保存到本地的,相对于linux container体积依然巨大无比:据官方新闻,微软原生 ...
- docker学习资料整理(持续更新中..)
docker最近可以说火得一踏糊涂,跟 51大神在交流技术的时候这个东西会多次被提到,当我们还玩vm+linux/freebsd的时候,人家已经上升到更高层次了,这就是差距,感觉好高大上的样子,技术之 ...
- Docker容器中运行ASP.NET Core
在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...
- 说一说windows原生docker及windows Server Container , Hyper Container 之间的关系(学习总结)
前一段时间学习netcore的时候解除到了docker,感觉真是不错的技术.百度了不少教程.因为我用windows就下载安装了一下试试.但是没有安装成功,才发现 需要安装virtualbox虚拟机,与 ...
- Windows Container 和 Docker:你需要知道的5件事
微软在2016年的Ignite技术大会上正式发布了Windows Server 2016,其中的容器服务已经可以作为生产环境使用.这意味着Windows 内置的容器服务正式进入了大家的视野,虽然之前我 ...
随机推荐
- Core Data使用之一(Swift): 保存
Core Data 用于永久化数据,它是基于SQLite数据库的保存一门技术. 那么,在Swift中,它是如何实现的呢? 首先,需要新建一个模板,打开工程中的xcdatamodeld文件,点击“Add ...
- Android中服务的生命周期回调方法
- 二叉树最大路径和-Binary Tree Maximum Path Sum
Given a binary tree, find the maximum path sum. For this problem, a path is defined as any sequence ...
- HDU-1996-汉诺塔VI
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1996 其实它就是求移动的所有可能,也就是n个盘子摆在三个塔上的任何可能的种数.可以这么思考这个问题:n ...
- Web项目或WCF发布IIS后,如何通过VS2010调试
在做项目的时候,例如WCF服务一般都会将WCF服务承载于控制台应用程序,或者WinForm窗体应用程序,因为这样可以直接在服务代码上打断点,然后就可以调试了.但是项目已经发布了,当然这里我用的本机进行 ...
- jQuery attr removeAttr 属性操作
jQuery attr removeAttr 属性操作 <%@ page language="java" import="java.util.*" pag ...
- .Net多线程编程—使用Visual Studio 2012进行调试
1 相关概念 1)栈帧 C语言中,每个栈帧对应着一个未运行完的函数.栈帧中保存了该函数的返回地址和局部变量. 栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构. 2)单步执行与单步函 ...
- jmeter线程组配置
线程组配置 线程组相当于有多个用户,同时去执行相同的一批次任务.每个线程之间都是隔离的,互不影响的.一个线程的执行过程中,操作的变量,不会影响其他线程的变量值. Delay Thread creati ...
- Jquery实现的几款漂亮的时间轴
引言 最近项目中使用了很多前端的东西,对于我一个做后台开发的人员,这是一个很好的锻炼的机会.经过这段时间的学习,感觉前端的东西太多了,太强大了,做出来的东西太炫酷了.现在有很多开源的前端框架,做的都非 ...
- 纯css实现轮播图
轮播图的实现原理其实是比较简单的 举个例子 <div class="main"> <div class="div-main"></ ...