• Docker技术使用场景主要特性等相关资源整理
  • OpenStack与Docker集成:使用openstack管理docker
  • Docker的隔离性和安全性问题
  • docker使用的技术之Container内核原理介绍
  • Docker详细的应用与实践架构举例说明
  • ​基于Docker的大数据开发实践
  • ​docker之轻量虚拟化技术——docker实战分享
  • 什么是docker?Docker技术详细介绍
  • 基于Docker容器的云计算平台搭建实战
  • docker和VM虚拟机的区别以及如何用docker搭建基础设施
  • ​Docker容器术语以及docker的特点
  • Docker & Docker Hub
  • Introduction to Swarm, a Docker-native clustering system
  • Docker、Kubernetes、Neutron中的网络简介
  • ​James Turnbull:《The Docker Book》
  • Docker on AWS:Running Containers in the Cloud
  • Introduction docker Container Security
  • docker应用之利用Docker构建自动化运维
  • Docker基本原理简介和详细安装步骤介绍
  • Docker 基础用法和常用命令及选项介绍
  • Docker 端口映射,端口绑定操作介绍
  • Docker 四种网络模式及网络配置详细介绍
  • docker下通过Dockerfile指令构建镜像的指令选项介绍
  • ​Docker 容器数据管理,链接容器,构建私有库
  • Docker容器分析----好处和缺点介绍
  • 如何实现 coreos 下Docker 与分布式数据库结合
  • 应对 Docker 网络功能难题的挑战与思考
  • Docker着手将容器部署到私有云与公有云
  • 为现在和未来改善Docker安全
  • Docker容器与企业存储的结合思考
  • Docker监控以及cAdvisor和Prometheus监控工具的对比
  • ​有关Docker的八个令人难以置信的事实
  • ​部署 Docker 前必须问自己的四个问题
  • 程序猿,千万别说你不了解Docker!
  • 将要改变IT世界的的docker技术是什么?
  • Docker支持更深入的容器日志分析
  • Docker宣布支持Windows 10和Azure Windows Server
  • Docker 1.12.0到底有哪些不同之处
  • 云计算之Docker容器技术如何落地?
  • Docker v1.12.0-rc5 普通版实验版本下载,高级容器引擎
  • 针对Docker容器的监控指标
  • ​Docker 的步伐:DevOps 与 OS 化
  • 八个问题帮你快速了解Docker
  • ​什么是Docker以及docker的 诞生技术演进
  • ​Docker v1.12.1-rc1各种版本发布下载,高级容器引擎
  • ​Docker 1.12.0 改进了服务的负载均衡参数
  • Windows下Docker应用部署相关问题详解
  • Docker1.12 引擎使用体验 ​
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • ​Windows Server 2016提供Docker原生运行的企业级支持
  • ​传统应用的docker化迁移
  • Docker携手Windows Server
  • Docker扁平化网络设计与实现
  • Plesk 中操作和设置 Docker 容器
  • 如何通过 Docker 在 Linux 上托管 .NET Core
  • Docker 1.12.4应用容器引擎发布及下载地址
  • Docker v1.13.0 应用容器引擎正式版发布及下载地址
  • docker源码分析之容器日志处理与log-driver实现
  • 如何在win7,win8下面启动docker
  • win7,win8安装Docker具体过程
  • win7, win8安装docker需要了解的概念
  • win7,win8安装docker的依赖条件
  • Docker Toolbox 介绍
  • Arch下面安装启动及删除docker介绍
  • Debian 7(Wheezy)下面如何安装docker
  • Debian 8(Jessie )下面如何安装docker
  • 红帽RHEL下如何删除docker详细步骤介绍
  • 红帽RHEL下面设置docker服务自动启动
  • linux下不使用sudo命令执行docker的操作步骤
  • 红帽redhat下通过脚本和yum安装docker容器引擎的详细步骤
  • 红帽RHEL下安装docker依赖性检查
  • Ubuntu Vivid 15.04 下面安装docker的详细步骤
  • Ubuntu Trusty 14.04 (LTS) 下面安装docker及依赖关系检查
  • Ubuntu Raring 13.04 和 Saucy 13.10 (64 bit)下面安装docker
  • Ubuntu Precise 12.04 (LTS) (64-bit)下面安装docker
  • Docker支持的安装方式
  • 通过docker ps命令检查运行中的docker镜像
  • 关于docker入门教程
  • 通过docker search命令搜索可用docker镜像
  • 在docker容器中运行hello world!
  • 在docker容器中通过apt-get安装新的程序
  • 通过docker commit命令保存对docker容器的修改
  • 通过docker run命令运行新的docker镜像
  • 准备学习docker: docker version命令查看版本
  • 什么是Docker?Docker通常用于如下场景
  •  
    当前位置:  教程>docker中文入门学习手册

    Windows下Docker应用部署相关问题详解

     
    分享到:
        发布时间:2017-2-20  


        本文导语: Windows下Docker应用部署相关问题详解Linux和Windows,Docker里各有多少进程在安装配置Container Host的时候,经常报错Container OS Image下载失败(没办法,墙内的缘故)。什么是Container OS?顾名思义,是从容器角度看到的OS。Container OS实际是...

    WindowsDocker应用部署相关问题详解

    Linux和Windows,Docker里各有多少进程
    在安装配置Container Host的时候,经常报错Container OS Image下载失败(没办法,墙内的缘故)。
    什么是Container OS?顾名思义,是从容器角度看到的OS。
    container os实际是应用所依赖的用户模式(user mode)os组件,对于windows容器来说,例如ntdll.dllkernel32.dll或者coresystem.dll之类的system dll。主机上的所有容器共享内核模式(kernel mode)os组件,对于windows,就是ntoskrnl.exe,还有驱动等。

    例如对于以下命令,意味着Windows系统从docker映像中获取Windows Server Core的用户模式OS组件,并启动cmd获得Shell

    docker run -it windowsservercore cmd
    Linux也是一理,如果运行以下命令,意味着从docker映像中获取Ubuntu的用户模式组件,并且启动Bash Shell。
    docker run -it ubuntu /bin/bash

    对于以上两个容器,Linux容器里的进程比较少,可以参考以下截图

    细说Windows与Docker之间的趣事

    而Windows容器,则情况略有不同。

    在Windows主机上启动Process Explorer,可以看到这个Windows容器的进程相对多一些:

    细说Windows与Docker之间的趣事

    这是因为在Windows系统中,需要给应用提供一些用户模式的系统服务,例如DNSDHCPRPC等服务,这样从容器的角度来看,容器获得了自己独有的服务(一般是在各自的svchost或者其他服务宿主进程里运行),构成了所谓的Container OS。

    我们可以用PowerShell命令查看容器内部启动的Windows服务,大概有27个,参考附图。

    细说Windows与Docker之间的趣事

    很可惜,这个版本的Windows docker里,虽然有远程桌面服务,但是目前还不支持远程桌面到容器,所以无法使用容器应用的图形化界面

    容器里的应用,到底应该启动多少Windows服务?由于Windows服务的具体作用是非文档化的,所以不像Linux可以做到最精简。但是由于这些服务几乎不占用什么额外的资源,对于容器性能没有影响。

    Windows容器的进程如何隔离

    由于在最新的测试版本里,容器对象权限设置有了改变,只有SYSTEM权限才能查看。所以要查看Windows容器的进程隔离,需要用SYSTEM权限启动Winobj。这可以借助Psexec来实现:

    Psexec -i -d -s winobj.exe

    细说Windows与Docker之间的趣事

    可以看到Windows对象空间里多了一个Containers的节点,其下有若干个GUID分支,这些GUID代表系统里的容器。其下每个容器有自己独立的BaseNamedObjects等命名空间,包括互斥信号量内存Section事件等。

    可以用PowerShell查看容器的GUID,参考附图。

    细说Windows与Docker之间的趣事

    每个容器节点下,有自己的Session分支,例如该容器,占据了Windows系统的Session 2。如附图所示。

    细说Windows与Docker之间的趣事

    这就是为什么,不管用任务管理器,还是PowerShell,抑或是Process Explorer等工具,我们都在Windows主机里看到容器里的所有进程都会标记Session为2。

    借助Process Explorer,我们可以看到容器里的进程,所打开的Handle,其中就指向先前所看到的Windows容器对象命名空间。

    细说Windows与Docker之间的趣事

    同时还能看到,容器进程所在的WindowStation并不是WinSta0,而是Service-0x0-3e7$,3e7的10进制等于999,等于九五之尊,这是SYSTEM服务所在的窗口站。所以容器进程无法在Windows桌面上拥有图形化界面。

    细说Windows与Docker之间的趣事

    还可以查看一个有意义的对象,Windows容器所挂载的主机目录,类似于Linux容器的Volume

    细说Windows与Docker之间的趣事

    Windows容器的文件系统如何隔离

    和Linux一样,Windows容器映像采用分层的文件系统,基于映像创建容器后,相当于在只读的分层文件系统上再覆盖一层可读写的文件系统层。如果要修改的文件在最上层的可读写层里没有,则沿着分层的Layer找到目标文件后,将其用COW(Copy on write:写时复制)复制到可读写层再修改。

    细说Windows与Docker之间的趣事

    让我们进入到Windows主机的以下目录:

    C:ProgramDataMicrosoftWindowsHyper-VContainers

    该目录下列出所有通过PowerShell命令创建的容器文件。其下有文件夹和文件,都以容器的GUID来命名

    细说Windows与Docker之间的趣事

    其中的926A300B-ACB7-4B28-9D86-45BF82C1211C.vhdx就是该容器的最上层的可读写层,是一个VHDX文件。

    记住该可读写层并不是一个完整的文件系统,它需要和Image的现有文件系统组成Union File System。如果尝试双击该VHDX(只能尝试挂载停止状态的容器VHDX),试图挂载到Windows系统,会弹出以下报错信息提示虚拟硬盘无法挂载。

    细说Windows与Docker之间的趣事

    Image的文件系统位于以下路径(Windows Server Core的Container OS文件):

    C:ProgramDataMicrosoftWindowsImagesCN=Microsoft_WindowsServerCore_10.0.10586.0Files

    如果用Process Explorer查看容器进程访问的Dll,可以看到其访问的路径为Container OS文件。

    细说Windows与Docker之间的趣事

    如果是用docker命令创建的进程,道理类似,但是其可读写层文件系统位于以下路径:

    C:ProgramDatadockerwindowsfilter

    细说Windows与Docker之间的趣事

    Windows容器还有注册表

    和Linux不一样,Windows容器还需要考虑注册表的隔离问题。和文件系统命名空间隔离一样,注册表命名空间隔离也采用类似Union FS形式。

    下面让我们进入PowerShell命令创建的Windows容器文件夹内部。

    C:ProgramDataMicrosoftWindowsHyper-VContainers926A300B-ACB7-4B28-9D86-45BF82C1211CHives

    细说Windows与Docker之间的趣事

    在这个Hives文件夹下方,有很多命名为*_Delta的文件,这是容器所访问的注册表配置单元文件。

    细说Windows与Docker之间的趣事

    从命名方式中可以看到,容器的注册表和文件系统一样,也采用分层架构,最上层的是可读写的注册表命名空间。而Image映像也有只读部分的注册表空间,路径如下。

    C:ProgramDataMicrosoftWindowsImagesCN=Microsoft_WindowsServerCore_10.0.10586.0Hives

    在Process Explorer里可以看到可读写层、只读层注册表合并后所加载的内容

    细说Windows与Docker之间的趣事

    Docker命令所创建的容器,方法类似,位于类似以下路径:

    细说Windows与Docker之间的趣事

    Windows容器的资源限制

    大家知道,Docker可以调用CGroup技术限制Linux容器的CPU、内存等资源占用。而在Windows容器里,内存资源的限制,则是通过Windows的JO(作业对象)技术来实现。

    可以参考以下技术来限定Windows容器的CPU、内存和磁盘IO。例如可以将容器的内存限定为最大占用为5GB。

    https://msdn.microsoft.com/en-us/virtualization/windowscontainers/management/manage_resources?f=255&MSPPError=-2147217396

    然后用Process Explorer打开任意一个容器进程的属性对话框切换到Job标签页。

    可以看到所有容器进程共享一个作业对象,而且该作业对象的内存限额(Job Memory Limit)为5GB。

    • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:Windows下Docker应用部署相关问题详解
    相关文章推荐:
  • java命名空间java.awt.event类keyevent的类成员方法: vk_windows定义及介绍
  • 怎么在Linux下改windows系统文件啊,我把windows的BOOT.INI改了,windows启动不了
  • WinDows8最新版文件夹加密
  • x-windows如何安装在linux(rdehat9)上面呢,是不是x-windows也分windows和linux版本的吗?
  • 修改Windows硬盘分区名称
  • linux和windows串口问题!?linux向windows端发送,第一次write正常,继续write,windows接收到的就变成乱码了,这是什么原因??????
  • windows10玩游戏怎么样?唯一支持DirectX 12的windows
  • 装了Linux和Windows,怎样默认进入Windows
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • Linux与windows共存时,如何将Windows设置为默认启动系统?
  • windows/windows 7/windows 8 下打开查看、修改及保存超大(GB级)文本文件及其它类型文件的工具-PilotEdit
  • linux 、 unix给windows传送文件windows
  • win7/Windows7系统下载地址搜集整理
  • 怎样是编好的java application在windows上像windows应用程序一样直接运行
  • Windows7自带防火墙设置:启动,关闭及高级设置
  • windows 和linux双系统,重装windows后,无法启动linux?
  • IE11设置IE兼容性视图及提升Windows 8.1中IE11兼容性的相关设置
  • 如何将linux的一台机器加入windows 2000的域?并且通过一windows的机器上网?
  • Windows优化大师最新版 V7.99 Build 12.604发布
  • 为什么在安装了WINDOWS和LINUX的电脑上,重装WINDOWS会破坏MBR?
  • Windows7 常用使用技巧
  • Linux + Windows2000 双启动,Windows2000起不来了,说是文件被破坏,进来看看……


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号