题记

微软在人们的心目中就是商业化的代名词,操作系统、Office、数据库、Azure等可能是我们耳熟能详的,当然微软也在布局更多的技术王国。开源界对微软一直嗤之以鼻,指责其闭源行为影响技术的发展,不过微软现在也在积极改变以往的傲慢态度,慢慢的与开源融合,特别是很多产品都支持了Linux,例如SQLServer for Linux的发布,微软加入了OpenStack的基金会等。

虽然Linux是开源的领地,但是最终用户并不会买账,特别是GIS服务的政府用户,可能会更加习惯使用Windows,如今的产品虽然基于开源,但是能够降低用户门槛,尽可能的使用界面化操作才是真正的用户体验,这方面Windows独树一帜,特别是如今异常火爆的docker也可以直接运行在Windows环境下,本博在早些时间曾经发布了Windows Server 2016支持Docker,一方面2016还没有正式发布,另一方面部署docker环境还比较复杂,如今,用户可以直接在Windows10,通过简单的步骤就可以享用docker的好处,接下来我们就看看如何实现。

在西雅图举办的DockerCon 2016上,Docker官方发布了Docker Windows的公开测试版本。在这一版本里,你能够以一种非常简便的方式在安装了Hyper-V的Windows 10专业版上通过Docker运行Linux容器。在一段时间内这里会同时存在 一个稳定版本以及一个测试版本渠道 以获取新的版本。

部署环境

Docker for Windows 要求 64bit 的Windows 10 Pro, Enterprise and Education (1511 November update, Build 10586 or later) 或者Microsoft Hyper-V。

目前提供了两个类型,一个是Stable版本,一个是beta版本,前者更加稳定,但是可能并不是最新功能,beta版本并不稳定,但是紧跟最新的发展成果,用户可以根据需求自行选择。如果仅仅试用docker,希望在docker上运行第三方程序,建议试用stable版本,如果是对docker技术做研究,建议多关注beta版本。

不过用户可以将两个版本进行切换,但是只能运行一个版本。

下载地址:

https://download.docker.com/win/stable/InstallDocker.msi
https://download.docker.com/win/beta/InstallDocker.msi

安装部署

其实并没有什么好写的,安装某个版本之后,界面化的step by step即可。

安装完毕需要重启一下操作系统。

重启完毕之后,打开cmd,就可以运行docker环境了,是不是非常简单呢?

C:\Users\Administrator>docker version
Client:Version:      1.12.5API version:  1.24Go version:   go1.6.4Git commit:   7392c3bBuilt:        Fri Dec 16 06:14:34 2016OS/Arch:      windows/amd64Server:Version:      1.12.5API version:  1.24Go version:   go1.6.4Git commit:   7392c3bBuilt:        Fri Dec 16 06:14:34 2016OS/Arch:      linux/amd64C:\Users\Administrator>docker-compose version
docker-compose version 1.9.0, build 2585387
docker-py version: 1.10.6
CPython version: 2.7.12
OpenSSL version: OpenSSL 1.0.2h  3 May 2016C:\Users\Administrator>docker-machine version
docker-machine version 0.8.2, build e18a919

通过上述信息可以看到,其实Windows内置了一个linux的服务器环境,本质上还是借助与windows平台的hyper-v技术来创建一个Linux虚拟机,你执行的所有命令其实都是在这个虚拟机里执行的。开始菜单右键->控制面板->管理工具->Hyper-V 管理器->虚拟机右键设置

通过windows客户端进行访问,同时docker-compose、docker-machine都自动集成进去了,比较方便。

查看一下服务器的详细信息

C:\Users\Administrator>docker info
Containers: 3Running: 2Paused: 0Stopped: 1
Images: 3
Server Version: 1.12.5
Storage Driver: aufsRoot Dir: /var/lib/docker/aufsBacking Filesystem: extfsDirs: 19Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:Volume: localNetwork: host bridge null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.39-moby
Operating System: Alpine Linux v3.4
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.919 GiB
Name: moby
ID: LURE:ZYOH:CXUY:JANF:TT2M:VWAL:AMKS:ACBE:X7WG:77EF:3CJO:EUCI
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): trueFile Descriptors: 24Goroutines: 35System Time: 2016-12-28T03:13:55.6031232ZEventsListeners: 0
Registry: https://index.docker.io/v1/
WARNING: No kernel memory limit support
Insecure Registries:127.0.0.0/8

查看任务栏,可以看到有一个docker的运行图标,可以对docker for Windows进行相关配置

通过这个配置我们可以针对运行docker的虚拟机进行配置(例如CPU和内存)、网络、存储(容器挂载存储的磁盘位置)进行配置,同时可以查看docker运行的日志信息,你也可以通过reset将环境重置。

关于该设置可以在C:\Users\Administrator\AppData\Roaming\Docker里面的setting.json文件进行修改。

相关操作日志也可以在C:\Users\Administrator\AppData\Local\Docker里面查看具体的日志信息。

Docker实践

其实关于Docker的使用以前在博客上也介绍了,所有的命令和使用跟Linux环境基本没有什么区别,例如通过docker直接pull下一个supermap/iserver的镜像

C:\Users\Administrator>docker run supermap/iserver
Unable to find image 'supermap/iserver:latest' locally
latest: Pulling from supermap/iserver5a132a7e7af1: Pull complete
fd2731e4c50c: Pull complete
28a2f68d1120: Pull complete
a3ed95caeb02: Pull complete
ff2dc3f3940d: Pull complete
d1af24d817e7: Pull complete
3ec0e0463c10: Pull complete
91a1466b8ecb: Pull complete
ad0467d8161e: Pull complete
d633f6d099d2: Pull complete
Digest: sha256:b0af27b1ebc1321e73e61449a757f34eca71bb9fc32aa03841fa1490ac04bd2e
Status: Downloaded newer image for supermap/iserver:latest
aksusbd-2.4.1-i386/hasp_update
aksusbd-2.4.1-i386/hasplmd
aksusbd-2.4.1-i386/aksusbd.rc
aksusbd-2.4.1-i386/hasp.rules
aksusbd-2.4.1-i386/dunst
aksusbd-2.4.1-i386/dinst
aksusbd-2.4.1-i386/winehasp
aksusbd-2.4.1-i386/aksusbd
aksusbd-2.4.1-i386/
aksusbd-2.4.1-i386/SuperMap Trial License .v2c
aksusbd-2.4.1-i386/haspvlib_99235.so
tar: A lone zero block at 11065
dpkg-query: no packages found matching aksusbd
Removing files ...
Done
dpkg-query: no packages found matching aksusbd
Copy AKSUSB daemon to /usr/sbin ...
Copy WINEHASP daemon to /usr/sbin ...
Copy HASPLMD daemon to /usr/sbin ...
Copy start-up script to /etc/init.d ...
Link HASP SRM runtime environment startup script to system startup folder
Starting HASP SRM runtime environment...
Starting AKSUSB daemon: .
Starting WINEHASP daemon: .
Starting HASPLM daemon: .
Coping VLIB...
Installing v2c...
DoneUsing ISERVER_HOME:    /opt/SuperMapiServer8C/webapps/iserver
Using ISERVER_CONFIG:  /opt/SuperMapiServer8C/webapps/iserver/WEB-INF
Using UGO_HOME:        /opt/SuperMapiServer8C/support/objectsjava/bin
Using CATALINA_BASE:   /opt/SuperMapiServer8C
Using CATALINA_HOME:   /opt/SuperMapiServer8C
Using CATALINA_TMPDIR: /opt/SuperMapiServer8C/temp
Using JRE_HOME:        /opt/SuperMapiServer8C/support/jre
Using CLASSPATH:       /opt/SuperMapiServer8C/bin/bootstrap.jar:/opt/SuperMapiServer8C/bin/tomcat-juli.jar
28-Dec-2016 01:51:48.449 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.0.32
28-Dec-2016 01:51:48.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Feb 2 2016 19:34:53 UTC
28-Dec-2016 01:51:48.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.0.32.0
28-Dec-2016 01:51:48.450 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
28-Dec-2016 01:51:48.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.4.39-moby
28-Dec-2016 01:51:48.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
28-Dec-2016 01:51:48.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /opt/SuperMapiServer8C/support/jre
28-Dec-2016 01:51:48.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.7.0_80-b15
28-Dec-2016 01:51:48.451 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
28-Dec-2016 01:51:48.452 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /opt/SuperMapiServer8C
28-Dec-2016 01:51:48.452 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /opt/SuperMapiServer8C
28-Dec-2016 01:51:48.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/SuperMapiServer8C/conf/logging.properties
28-Dec-2016 01:51:48.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
28-Dec-2016 01:51:48.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms256m
28-Dec-2016 01:51:48.454 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx1536m
28-Dec-2016 01:51:48.454 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=192m
28-Dec-2016 01:51:48.454 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xss512k
28-Dec-2016 01:51:48.454 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=/opt/SuperMapiServer8C/endorsed
28-Dec-2016 01:51:48.454 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/SuperMapiServer8C
28-Dec-2016 01:51:48.454 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/SuperMapiServer8C
28-Dec-2016 01:51:48.455 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/SuperMapiServer8C/temp
28-Dec-2016 01:51:48.455 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /opt/SuperMapiServer8C/bin:/opt/SuperMapiServer8C/support/objectsjava/bin:/lib::/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
28-Dec-2016 01:51:48.561 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8090"]
28-Dec-2016 01:51:48.574 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
28-Dec-2016 01:51:48.576 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 508 ms
28-Dec-2016 01:51:48.599 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
28-Dec-2016 01:51:48.599 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.32
28-Dec-2016 01:51:48.606 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying configuration descriptor /opt/SuperMapiServer8C/conf/Catalina/localhost/iserver#iClient.xml
28-Dec-2016 01:51:49.054 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor /opt/SuperMapiServer8C/conf/Catalina/localhost/iserver#iClient.xml has finished in 447 ms
28-Dec-2016 01:51:49.054 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deploying configuration descriptor /opt/SuperMapiServer8C/conf/Catalina/localhost/iserver#help.xml
28-Dec-2016 01:51:49.096 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of configuration descriptor /opt/SuperMapiServer8C/conf/Catalina/localhost/iserver#help.xml has finished in 42 ms
28-Dec-2016 01:51:49.097 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /opt/SuperMapiServer8C/webapps/ROOT
28-Dec-2016 01:51:49.115 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /opt/SuperMapiServer8C/webapps/ROOT has finished in 18 ms
28-Dec-2016 01:51:49.116 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /opt/SuperMapiServer8C/webapps/iserver
28-Dec-2016 01:51:54.534 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

我们知道iserver的访问接口是8090,所以通过端口映射进行访问

C:\Program Files\Docker\Docker\resources\qemu-img>docker run -p 8090 -dt supermap/iserver
a96524fc1b05e809a7ec45d3f36405ce328385500d964299a39312c933d314c7C:\Program Files\Docker\Docker\resources\qemu-img>docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS                     NAMES
a96524fc1b05        supermap/iserver    "/bin/sh -c /opt/run."   7 seconds ago       Up 6 seconds                   0.0.0.0:32768->8090/tcp   goofy_snyder
ee212359bf4e        supermap/iserver    "/bin/sh -c /opt/run."   55 minutes ago      Up 55 minutes                                            thirsty_blackwell
95b25e2d2c71        hello-world         "/hello"                 About an hour ago   Exited (0) About an hour ago                             thirsty_bhabha

接下来就可以在宿主机的浏览器访问32768端口即可

文件解析

当进行docker for Windows的部署,会在C:\Program Files\Docker\Docker里面创建相关文件,其中相关执行命令存储在C:\Program Files\Docker\Docker\resources\bin

同时,在C:\Program Files\Docker\Docker\resources\qemu-img文件里面还可以执行qemu-img命令,这是一个不错的工具。

问题:我pull的镜像存储在什么地方?

由于所有的操作都是基于hyper-V的虚拟机,所以镜像都存储在虚拟机里面,可能运行的容器越多,该虚拟机占用的磁盘就会越大,所以可以自定义设置磁盘存储位置。在hyper-v选择虚拟机,右键设置,可以选择磁盘存储位置。

总结

简单用了一下,了解了其中原理不难得知,微软其实还是使用了hyper-V 作为一个Linux虚拟机提供容器环境,良好的用户体验应该会让很多用户进入容器世界,但是还没有没有根本解决windows运行容器的实质。

Windows 10中的Docker实践相关推荐

  1. windows 10中使用docker Client.Timeout exceeded while awaiting headers

    windows 10中使用docker 随着windows10在开发领域的发力,现在可以在windows中凭借ubuntu子系统,搭建docker环境. 下面叙述在windows10中进行搭建dock ...

  2. 计算机安全模式无法进入安全模式,如何解决无法在Windows 10中进入安全模式的问题...

    在下面的文章中,我们将讨论进入安全模式的众多方法.但是,在讨论这些方法之前,了解Windows 10中的安全模式是什么,以及无法进入安全模式会带来什么不利影响十分重要.安全模式确实有很多优点,特别是在 ...

  3. 在 Windows 10 中开启移动 WLAN 热点

    本文将介绍如何在 Windows 10 中开启移动 Wi-Fi 热点. This post is written in multiple languages. Please select yours: ...

  4. 组策略禁止自动锁定计算机,如何在Windows 10中禁用自动锁定

    原标题:如何在Windows 10中禁用自动锁定 Windows 10附带了许多功能,这样使工作更加轻松.其实有很多方法可以根据自己的喜好个性化使用.可以通过多种方式来个性化您的体验并控制计算机的行为 ...

  5. win10内核linux,windows 10中发布完整的Linux内核

    5月8日消息: 近年来,微软对Linux开发者社区的支持令许多人感到惊讶,包括将诸如Bash shell之类的东西引入到Windows,或者在Windows 10中支持原生OpenSSH,甚至包括Wi ...

  6. eclipse下如何打开被关闭的项目_如何在Windows 10中打开和关闭平板电脑模式

    默认情况下,将可转换计算机重新配置为平板电脑时,Windows 10会自动切换到平板电脑模式.如果你希望手动打开或关闭平板电脑模式,可以通过多种方法进行. 自动平板电脑模式在Windows 10中的工 ...

  7. windows10访客_如何在Windows 10中创建访客帐户

    windows10访客 If you find that your guests are asking fairly often to use your computer temporarily to ...

  8. window10内核Linux,windows 10中发布完整的Linux内核

    5月8日消息: 近年来,微软对Linux开发者社区的支持令许多人感到惊讶,包括将诸如Bash shell之类的东西引入到Windows,或者在Windows 10中支持原生OpenSSH,甚至包括Wi ...

  9. 如何开启和使用windows 10中的Hyper-v

    本文来说下如何开启和使用windows 10中的Hyper-v.windows10 系统中内置了Hyper-V虚拟机,对于经常使用Hyper-V虚拟机的用户来说是个不错的消息,但是内置的Hyper-V ...

最新文章

  1. JAVA大一新生要用电脑吗,大一新生有没有必要买电脑?辅导员:倘若不是这三点原因尽量别买...
  2. [第11天]mySQL简单介绍
  3. ble之gatt server
  4. java 设计模式_快速上手Java设计模式之简介
  5. html 显示状态条,怎么控制html5 video 控制条显示和隐藏时间
  6. 电商扣减库存_电商平台仓库管理系统究竟有何功能?
  7. Summarize to the Power of Two(CF-1005C)
  8. 解决layui laydate动态创建多个时不起作用点击无效的问题
  9. ————————————————————————动态规划——————————————————————1003——————————...
  10. linux一键安装python_Linux下,一键安装python3;适用于Centos、Debian、Ubuntu等
  11. java hook 和反射_Java反射与hook混用反射某支付的方法
  12. Facebook发布基站开源平台OpenCellular
  13. 原生php使用foreach,php – 使用foreach和session循环 - 程序园
  14. SpringMVC国际化(i18n)(五)
  15. ios android 宏,iOS常用宏(不断更新)
  16. 未安装任何音频输出设备
  17. HDOJ-2154-跳舞毯
  18. uni-app 图片上传插件使用说明
  19. java ACM竞赛IO优化Petr模板
  20. 根据ParentId生成树状结构这po事

热门文章

  1. html5+css3个人相册网页制作
  2. 工作邦智慧水务云平台的十大系统
  3. 大学的计算机社团都学什么,大学有什么好玩的社团 大学生必入的5个社团
  4. 美设计出激光动力太空电梯 成功爬升900米
  5. 语音信号的同态处理、倒谱分析和Mel频率倒谱系数
  6. .spring 知识点总结
  7. 用支付宝小程序,做一笔价值百亿的洗衣生意
  8. python模拟登录qq账号密码_python3.2模拟登录webqq
  9. android apk 减小apk的大小
  10. 2019年余姚市小学生程序设计竞赛复赛 字母表