如何在 Windows 操作系统中运行 docker运行windows 客户端

十个问题迅速了解Windows Docker
来源:dockone &
作者:彭爱华
  微软在5月份Build大会上的官方说法,说是这个夏天会放出Windows Server Container的测试版。也就是说,目前我们还无法看到Windows Docker的测试版本,无法直接上手测试。接下来我就大家关心的十大问题进行介绍:
  1. Windows Docker和Hyper-V有啥区别?
  Hyper-V和VMware/Xen/KVM等类似,都是硬件虚拟化,安全但笨重。
  Windows Docker是OS虚拟化技术,具备一定的隔离能力,性能更好、容易移植。
  两者不是互相取代的关系。
  注意:Windows Docker并不是我们在Docker 1.6时见到的Windows Docker Client,也不是Boot2docker这个Windows下的linux虚拟机,而是真正的Windows版本的Docker。其实其正式名称并不叫Docker,而是叫做Windows Server Container,还有Hyper-V Container,有2个产品,其中Windows Server Container类似于linux Docker,而Hyper-V Container有些类似于clear linux或者Hyper Docker。
  这是因为Docker是商标名称,微软不能直接拿来使用。
  2. Windows Docker和Softgrid(APP-V)/Thinstall等有啥区别?
  Docker是OS虚拟化,主要场景是服务端应用,这些容器(应用)之间通过标准的网络接口进行通信,好像虚拟机一样。
  Softgrid是应用程序虚拟化,主要用于客户端应用部署。例如Office,这些应用在同一个会话里运行,完全就是传统的应用,彼此之 间可以进行进程间通信,例如Word可以OLE调用Excel的表单等等。不同的进程,看到的文件系统不会隔离。适用于批量部署客户端应用。
  3. 容器和沙盒是什么关系?
  曾经看到一句很棒的评语,必须分享给诸位:
  Sandboxing is focused on just security with code isolation. Containers have some security code isolation, but this is not the only or primary purpose. One way to think about containers is as a layered/quarantined filesystem which makes it quick/easy/lightweight to run an application and also makes the application (in the container) very portable.
  从下图中我们可以看出,在Windows 10里,IE的继任者Edge浏览器就采用了沙盒技术。
  同样在保护模式下运行的Office文档,也运行在 沙盒里。如下图所示。
  而容器,则还必须要在移动能力上有所考量,确保让应用,也能变成按需递交的动态服务。以前的硬件虚拟化,能将OS、App等变成文档,从而把服务器资源变成按需递交的服务,现在Windows Docker和linux一样,也能变成image,变成文档,变成按需递交的动态服务。
  4. Windows Docker和其他OS虚拟化工具之间是什么关系,例如很早就听闻的VPS等?
  从技术角度看,底层原理大同小异。看图吧。
  Docker和其他OS虚拟化技术一样,技术实现大致差不多。关键看谁能带动生态圈,能够赢得其他厂商的支持。同时Docker的分层文件 系统实现,也是其特别引人入胜的地方。这个截图的下载地址在这里。
  5. Windows Docker分层文件系统?
  先看看Linux的实现。DaoCloud的大牛孙宏亮老师指出:假设我们下拉了Ubuntu:14.04映像,并通过命令docker run &it ubuntu:14.04 /bin/bash将其启动运行。则Docker为其创建的rootfs以及容器可读写的文件系统。参考这张截图
  从容器的视角来看,虽然只有一个逻辑的完整文件系统,但该文件系统由&2层&组成,分别为读写文件系统和只读文件系统。孙老师的雄文链接在此。
  Windows Docker采用类似的分层文件系统。参考下图。
  Windows Docker采用NTFS文件系统的重解析点技术(reparse point),顶层的沙盒层(sandbox layer)是可读写的,只允许该容器自己占用,而其他层 则是只读的。在这张图中,底层的基础OS层和中间的应用程序框架层都是只读的,而顶层的沙盒层则可读写,在 容器的视角看来,它独占了完整的文件系统。
  这有点类似于Hyper-V的差异磁盘链(顶部的子盘才能读写,其上方的所有父盘和Base盘都是只读的)。
  Windows Docker的分层文件系统,我是将其理解为类似符号链接(仅仅用来帮助理解,不要真的轻信),当顶层的沙盒层打开文件时, 相当于打开一个符号链接,而尝试修改时,则COW(Copy on write)。到底采用什么底层文件系统技术,如何实现多个容器并发访问只 读Layer文件的性能,如何cache等,目前一概不知道。sorry!
  6. Windows Docker的文件系统隔离
  前段时间的热门话题,除了股票,就要算是某在线旅游商的悲剧了,坊间甚至传闻其为数据误删!!!
  有客户曾经问到:Docker能否避免这种悲剧?其实Docker和虚拟机一样,都替代不了容灾和备份的机制。不过Docker确实有文件系统隔离 的能力。我在Build大会里看到,演示者在Windows Container里执行删除C盘根目录下所有文件和注册表键值,尽管这个容器被毁了 ,但是根本不会影响其他容器,更不会影响主机,这和linux Docker一样。看图片吧。
  7. IPC隔离机制
  在另一位孙老师,孙建波老师的文章里我们看到,linux Docker采用了IPC隔离机制。而Windows Docker也采用类似的隔离机制。这个机制就是所谓的会话隔离。
  那么Windows里,哪些技术会用到会话隔离呢,盆盆简单总结一下:
  首先是终端服务,会话就是为了这个技术而发明的。
  快速用户切换,这和终端服务实际上是一样,只不过快速用户切换只会提供最新登录用户的桌面(shell)。
  从Windows Vista开始,系统级进程和服务,运行在会话0里,这就是为什么我们无法再用"mstsc /console"命令来登录到服务器的控制台会话。
  从Windows 8开始,Metro Application(平板专用的应用),也采用会话隔离技术。
  也就是说,会话是为了终端服务这种多用户机制来准备的。
  用Sysinternals Suite工具包里的Winobj这个小工具,可以看到会话隔离的效果。
  在图中可以看到,不同会话里拥有不同的对象命名空间,例如不同容器,有自己独立的窗口站(终端服务,其他场合只有当前登录用 户才有Winsta窗口站),BaseNamedObjects目录,包含事件、互斥信号和内存段等对象。不同会话里的应用,不能够发送窗口消息(Window Message,以防止粉碎攻击)。
  Windows Docker沿用了会话隔离技术,不同容器在同一个Windows主机上访问同一个命名对象,就不会导致冲突。
  在Build大会的演示里,启动了2个容器,都是从同一个Windows Server Core映像里创建出来。在其中一个容器里运行tasklist命令, 显示当前的进程信息,包括会话。
  在这个截图中,我们可以看到该容器运行在会话14里。
  在另外一个容器里同样运行tasklist。可以看到该容器运行在会话15里。
  类似于两个容器,分别通过远程桌面访问一样,拿到不同的会话(session),从而获得namespace隔离能力。
  从两个截图里能看到什么?其中System和空闲进程是共享的,这说明Docker是共享宿主机的内核。当然进程号都一样不代表什么,因 为所有Windows里,这两个进程的PID都一样!而每个容器都有自己的svchost进程、csrss进程和wininit进程等。这些进程都是 per-session的。
  8. Windows Docker能显示图形化界面吗?
  传统的Windows应用大多是有GUI的,所以这些应用可能需要通过图形化方式进行远程操控。Windows Docker会通过容器的RDP服务连 接上来。
  图中显示通过RDP服务连接到Process Explorer这个带GUI的系统进程管理工具。由于RDP实际上就是终端服务,所以Process Explorer这个图形化进程相当于又运行在一个新的会话里了!这个说起来有点拗口。
  从这张图里我们可以看出,由于Process Explorer是在终端会话里打开的,所以我们可以在容器的任务管理器里看到有两个会话:
  会话14是Docker自己的会话,在这里尝试启动Process Exploer,但是啥都看不到,这个是正常的,因为图形化界面无法在Docker客户端 里显示,Linux也采用类似VNC/RDP等办法开专门的通道访问。
  而会话15则是通过RDP访问的会话
  9. 创建Windows Docker
  和linux Docker,Windows Docker(记住有两个产品,Windows server container和hyper-v container)完全支持linux Docker的接口和工具集。就好比电视机和投影仪,其内部实现固然大相径庭,然其和电脑的之间的接口则几乎完全一致。
  创建Windows 容器,和linux一样,有Docker file,直接Docker build,生成Image。
  Docker File的简单范例:
  From Windowsservercore WORKDIR \ COPY bin\Debug\ \Deapp CMD \DemoApp\Demoapp.exe
  今后微软的Windows azure云,可以直接支持Docker,不管是Windows还是linux,都可以直接用最新的visual studio把代码签到azure的linux或者Windows容器里。当然也可以直接用azure的visual studio online服务。
  10. Windows Docker不同版本,以及linux之间异同
  首先分享灵雀云老大左玥老师的PPT。
  可以看到session和JO,是Windows Docker的隔离技术,同时JO技术类似于linux里的CGroup。可以参考chrome的相关技术。chrome就是用到了不少Windows的隔离技术。
  再看一张图片。
  从这里可以看出Windows Docker不同版本和linux之间的异同点。其中Hyper-V Container的安全能力高于Windows Server Container。
  Windows Server Container和Hyper-V Container之间的差异,可以参考这个图片。最大的差别在于,hyper-v container支持多租户安全能力,同时支持加域。而Windows server container则不能加域,这意味着如果这个应用需要加域的话,则无法用Windows Server Container。
  问: 从前部分看讲解的来看,个人觉得Windows Server Docker主要用到的是Dandbox沙盒技术,对吗?
  答:应该说和Linux Docker一样,既有沙盒技术,又有分层文件系统。
  问: Windows也有在容器里面使用的Image了吗?下载下来之后在liunx的Dockr里面能用起来吗?linux的Image在Windows Server Docker里面能跑起来吗?
  答:Windows Docker和linux不兼容。不能将linux image放在Windows里运行。因为Docker是共享内核的,两者实现完全不同。
  问:支持GUI吗?
  答: 能支持GUI,就和Linux docker一样。但是由于Docker Client本身不能支持GUI,所以需要用RDP Client连接。
  问:Windows的Docker只是用Windows做基础的,没有像linux那样去抹平不同发行版的差异?
  答: 由于Docker实质是OS虚拟化技术,所以依赖于OS kernel,Windows和Linux互相不兼容。目前的其中一个解决办法是,从代码源头解决,例如同一个代码,既可以签入到Windows容器,也可以嵌入到linux容器上(跑Linux版本的.NET)。
  问:Win PC上是不是不用再像目前安装Docker那样先安装虚拟机之类的?
  答:不是,Windows Docker是原生的Windows版本的Docker机制,和linux Docker等价,不是采用Boot2Docker这样的虚拟机。
  问:Windows Docker是已经有Windows的image吗?
  答:对,会有Windows sever image,例如我们熟悉的Windows server core,还会有今后的Windows nano server。
  问:这些image是不是都不带GUI?管理起来的话,微软目前有自己的容器管理平台了吗?
  答:可以有GUI,但是云端的环境,倾向于弱化GUI,这就是微软为什么要推出完全没有GUI的Windows Nano Server的原因,Nano Server,不但没有GUI,连Console都没有,需要通过PowerShell命令行等远程管理。另外,Windows Docker支持传统的Linux Docker接口。
  问:Windows Docker有哪些比较典型的应用场景么?
  答:Windows Docker的典型场景,和Linux几乎一样,都是实现应用的动态服务化,打断应用和底层硬件设备之间的紧密耦合的纽带。
  问:Windows Docker有哪些比较典型的应用场景么?
  答:Windows Docker的典型场景,和Linux几乎一样,都是实现应用的动态服务化,打断应用和底层硬件设备之间的紧密耦合的纽带。
相关新闻 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款windows下安装docker - 临渊羡鱼不如退而结网 - ITeye技术网站
博客分类:
学习笔记一 windows下安装docker
1.基本信息
docker官网
安装说明及doc
2.windows下安装docker
英文原文:
由于Docker引擎使用了Linux特有的内核功能,所以在Windows中运行需要一个轻量级的虚拟机。可以使用Windows Docker客户端来控制虚拟的Docker引擎来构建、运行和管理Docker容器。
为了是这个过程更简单一些,我们设计了一个名为 的辅助应用来安装虚拟机和运行Docker守护进程。
(1)下载最新的发布版,当前的最新版为v1.2.0,下载地址为:
(2)运行安装程序,将安装VirtualBox,MSYS-git,boot2docker Linux ISO,和Boot2Docker管理工具
(3)从你的桌面或应用程序-&Boot2Docker ,运行Boot2Docker Start shell脚本,这个启动脚本将要求你输入一个ssh秘钥密码,最简单的(但至少安全)是直接回车
Boot2Docker Start脚本将会连接到虚拟机内的一个shell会话,如果需要,它将初始化一个新的VM并且启动它,
(1)下载最新的发布版,当前的最新版为v1.2.0,下载地址为:
(2)运行安装程序,它将升级Boot2Docker管理工具
(3)为了升级你现有的虚拟机,打开一个终端(CMD命令行)并且运行如下命令:
boot2docker stop
boot2docker download
boot2docker start
3)运行Docker
Boot2Docker可以自动记录你的信息,所以你可以立即使用Docker。
让我们试试hello-world这个映像示例。运行:
$docker run hello-world
这个命令将下载一个非常小的hello-world 映像并且打印出“Hello from Docker.”信息。
4)更多详情
Boot2Docker管理工具提供了以下几个命令:
$ ./boot2docker
Usage: ./boot2docker [&options&] {help|init|up|ssh|save|down|poweroff|reset|restart|config|status|info|ip|delete|download|version} [&args&]
5)重定向容器端口
如果你是有求知欲的,boot2docker缺省的用户名是docker,密码是tcuser。
最新版本的boot2docker只设置了一个主机网络适配器来访问容器的端口。
如果你使用一个暴露的端口号来运行一个容器:
docker run --rm -i -t -p 80:80 nginx
然后你就通过以下命令获取到nginx服务器正在使用的ip地址
boot2docker ip
一般来说,它会是192.168.59.103,但它可能会被Virtualbox的DHCP实现改变。
获取更多信息或者报告问题,请访问:
-----------------------------分隔线-------------------------------
由于在windows下运行其实是通过virtualbox中已经安装好的一个linux系统来实现的,因此运行前需要确定在BIOS中已启用了虚拟化技术,否则启动时会报错,boot2docker vm无法启动
运行后如图:
浏览 14147
浏览: 432355 次
来自: 北京
下面这个文章写的更加详细,也更加清楚,推荐看看http://b ...
这个应该是浏览器内部设置的,你可以在Android上试一下别的 ...
bsr1983 写道该值是浏览器内部的一个变量,只读的,不可修 ...
该值是浏览器内部的一个变量,只读的,不可修改,具体可参见htt ...
4.devicemotion事件(3)interval:以毫秒 ...您目前的活力值不够下载该资源哦~~
怎么样快速获得活力值?
下载此资源将扣除活力值-20
(只在首次下载扣除活力值,之后可以免费下载)
DevStore用户登录
还没有DevStore帐号?
快捷登录:
为了尽快解决大伙儿的问题,请务必要找相对应的客服哦~
DevStore贯穿项目生命周期,解决你的所有问题
【干货】Docker Windows客户端发布 该学习Docker了
对这家估值高达十亿美元,炙手可热的容器管理创业公司你知道多少?
DevStore编辑 陈儿
容器管理服务商Docker是近两年炙手可热的创业公司之一,一经面世就受到了各大巨头的青睐,谷歌、亚马逊、微软等都表示保证自己平台与Docker容器技术的兼容性。Docker还是、外媒JavaWorld整理的由之一。
Docker同样受到资本市场的亲睐,2013年1月Docker曾进行了1500万美元的B轮融资,去年9月,Docker获得4000万美元的C轮融资,又在近日获得了9500万美元D轮融资,有消息称Docker的估值很可能已经高达10亿美元。
近日,Docker推出了Windows&客户端
国外媒体VB消息,Docker和微软近日联合发布了面向Windows的Docker客户端。这款面向Windows的客户端是今天发布的Docker&1.6中的一部分。
这个客户端采用的是命令行界面,可以让用户在Windows上管理运行Linux容器的Docker服务器,同时管理Windows&Server容器,Hyper-V容器的管理功能将会在未来的迭代版本中推出。
从现在起,开发者可以通过boot2docker或者Chocolatey&package&manage获得这款客户端。
在国内,Docker同样形式大好,受到广泛追捧,一些Docker的学习资料及资料来源。
了解Docker:
Docker学习:
《Docker入门实战》涵盖的内容包括Docker指南、命名空间教程、Docker生态系统介绍、Dockerfile最佳实践、Swarm入门和Docker应用实战。&
Docker入门者学习官方资料:
拓展阅读:
Kubernetes作为Docker生态圈中重要一员,是Google多年大规模容器管理技术的开源版本,是产线实践经验的最佳表现。
Docker成立两年,估计10亿美元,对云计算行业未来的影响有不可限量,并且很有可能已经晋升到“独角兽俱乐部”,但Docker总部确看上去并不那么显赫,吶,就这样:
不过内部环境却很宜人,合适做创新工作。
[本文为DevStore原创文章,转载请注明出处,并附上原文链接 ]
已收藏 取消
陈儿 DevStore编辑
简介:天涯草一棵
可能喜欢的文章
可能感兴趣的问答
开发者交流群:
DevStore技术交流群2:
运营交流群:
产品交流群:
深圳尺子科技有限公司
深圳市南山区蛇口网谷万海大厦C栋504
Copyright (C) 2015 DevStore. All Rights Reserved轻量级虚拟化工具Docker登陆Windows平台|蓝点网}

我要回帖

更多关于 windows 系统运行时间 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信