博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
windows-docker介绍
阅读量:2396 次
发布时间:2019-05-10

本文共 4923 字,大约阅读时间需要 16 分钟。

part 1 docker官方给的docker for windows

介绍了如何在windows上使用docker。 
首先环境需要64bit Windows 10 Pro,然后需要开启HyperV服务。 
然后下载安装包就可以了。 
安装过程还是相当顺利。一路下一步就OK。 
然后就可以开始体验我们的windows下的容器服务。

官方给的例子使用了ubuntu镜像。 
这里一个大大的疑问涌上心头, windows容器服务已经可以直接跑的容器镜像了? 
带着好奇心,启动了ubuntu镜像。

docker run -it ubuntu bash
  • 1
  • 1

进入镜像不免想看看,到底是什么情况。uname -a 来查看下内核版本。 
4.4.5的内核出现在了眼前。难道其实windows上跑的容器,仅仅是跑在一个虚拟机里面。

打开HyperV的管理器,可以看到,的确启动了一台虚拟机。 
该虚拟机使用了MobyLinuxVM.vhdx文件作为了数据盘,用来存储docker image文件。mobylinux.iso作为启动盘 
来加载linux系统。

好吧。这样原理就明朗了。使用HyperV虚拟机运行了一个定制版本的linux, 
然后windows装了docker来跟这个定制版的linux进行通信,达到了对容器使用的目的。使用的镜像就是linux的镜像。

原理明朗了,但是有一些莫名的失望,windows上的容器是这么使用的吗?那windows原生程序怎么跑呢?

使用

docker search microsoft
  • 1
  • 1

有些惊喜的发现

NAME                                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDmicrosoft/aspnet                              ASP.NET is an open source server-side Web ...   464                  [OK]microsoft/dotnet                              Official images for working with .NET Core...   207                  [OK]mono                                          Mono is an open source implementation of M...   172       [OK]microsoft/azure-cli                           Docker image for Microsoft Azure Command L...   61                   [OK]microsoft/iis                                 Internet Information Services (IIS) instal...   25microsoft/mssql-server-2014-express-windows   Microsoft SQL Server 2014 Express installe...   23microsoft/nanoserver                          Nano Server base OS image for Windows cont...   11microsoft/windowsservercore                   Windows Server Core base OS image for Wind...   8microsoft/dotnet-preview                      Preview bits for microsoft/dotnet image         5                    [OK]microsoft/oms                                 Monitor your containers using the Operatio...   5                    [OK]microsoft/applicationinsights                 Application Insights for Docker helps you ...   3                    [OK]microsoft/sample-nginx                        Nginx installed in Windows Server Core and...   2microsoft/sample-node                         Node installed in a Nano Server based cont...   2microsoft/sample-redis                        Redis installed in Windows Server Core and...   2microsoft/dotnet35                                                                            2microsoft/sqlite                              SQLite installed in a Windows Server Core ...   1microsoft/sample-httpd                        Apache httpd installed in Windows Server C...   1microsoft/sample-mongodb                                                                      1microsoft/sample-mysql                        MySQL installed in Windows Server Core and...   1microsoft/sample-dotnet                       .NET Core running in a Nano Server container    1microsoft/sample-golang                       Go Programming Language installed in Windo...   0microsoft/sample-python                       Python installed in Windows Server Core an...   0microsoft/sample-ruby                         Ruby installed in a Windows Server Core ba...   0microsoft/dotnet-nightly                      Preview bits of the .NET Core CLI               0                    [OK]microsoft/sample-rails                        Ruby on Rails installed in Windows Server ...   0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

已经有了microsoft的镜像了,那么尝试下载了一个microsoft/iis的镜像。在执行

docker run -it microsoft/iis cmd
  • 1
  • 1

但是报错误。提示找不到$PATH变量。

到这里,基本可以确定,这个windows镜像不是这样使用的。那么windows上的容器服务该怎么用呢。

part 2

峰回路转,google一下就能看见,在MSDN网站有专门介绍windows docker服务如何体验的。

根据提示,就可以真正的体验windows的容器服务。

首先说明下,截止现在windows的容器服务还是没有正式发布的。但是作为开发人员已经可以开始进行一些工作了。

环境要求 Windows 10 预览版,需要在win10中进行更新到一个开发人员版。 
然后按照文章中介绍的进行安装就可以正常启动容器。

这里说一下,注意的地方:

  • 从windows docker介绍的英文版中下载的docker是1.2.0版的。这个版本存在bug,在windows上会出错。 
    中文版介绍页面直接下载1.3.0的是可以正常使用的。
  • windows的容器需要开启HyperV服务。
  • windows存在两种容器,一种是windows上的,在win2016server版中使用的是这种。一种是借助HyperV的,在win10使用的就是借助HyperV的
  • 在win10中使用的容器使用了nanoserver这个镜像,这个镜像就是一个裁剪过的微缩版windows。而win2016server上直接使用的是windowsservercore镜像。
  • 在win10的容器,其实还是使用HyperV的虚拟机启动了nanoserver这个镜像,然后再镜像里面运行windows程序。每一个docker容器都是一个虚拟机。
  • 根据文档,在winserver中启动的容器应该类似于linux的容器,真正公用了宿主机的内核。

小结:

从windows提供容器服务可以看到,docker的本质其实应该是镜像+资源隔离。和使用容器或者虚拟机本身来说关系并不那么密切。 
在windows下,为了能够启动linux的程序,还是需要借助虚拟机来做隔离。而windows本身也存在有个人版和服务器版。 
由于这2个版本内核形式的不同,windows为了让个人版能够使用容器服务目前也采取了虚拟机来启动一个微缩的内核。 
这一思路也许可以在linux上沿用。在linux上启动nanoserver的虚拟机,然后跑windows程序。从这个角度看,摒弃容器本身带来的性能 
优越性,将其封装在虚拟机层面来提供服务可以使得容器服务真正的操作系统无关。而这对现在企业中大量 windows服务进行容器化改造也有着深远的意义。

转载地址:http://bffob.baihongyu.com/

你可能感兴趣的文章
压测工具swingbench和sysbench对比
查看>>
MySQL源码安装总结(r12笔记第12天)
查看>>
花卉世界大观园和杂技之游
查看>>
在eclipse中配置MySQL源码环境(r12笔记第14天)
查看>>
Oracle数据误操作全面恢复实战(r11笔记第78天)
查看>>
MySQL中的double write(二)(r12笔记第17天)
查看>>
一个IT人和ppt的故事(r12笔记第39天)
查看>>
总结一下这一百天来的收获(r12笔记第100天)
查看>>
再见了,老铁
查看>>
一种Oracle快速的整合迁移方案(r12笔记第98天)
查看>>
IP地址定位区间的问题分析(r13笔记第9天)
查看>>
分分钟搭建MySQL Group Replication测试环境(二)(r12笔记第41天)
查看>>
数据架构难点-数据分布(r12笔记第43天)
查看>>
一个复杂的数据需求的MySQL方案
查看>>
Oracle 12cR2中的ADG会话保留特性
查看>>
高考数据分析和读书感悟
查看>>
MySQL的学习图谱(初版)
查看>>
MySQL中GTID和自增列的数据测试(r12笔记第38天)
查看>>
MySQL中的反连接(r12笔记第45天)
查看>>
Oracle和MySQL中短小精悍的SQL
查看>>