本人行业属于智能制造,偏向工厂应用,客户端程序全部是.Net 的 WinForm;本系统的后台是.Net,多系统交互的有java的;因系统发布效率问题,想采用docker Windows 的生产力环境;

  • docker 技术原理,和好处在此不过多描述,大家都说好;

  • 主要学习 Windows containers的应用,是 Windows原生容器;不是linux,不是linux,不是linux,重要的事情说三遍;

下面把学习中遇到的坑描述好,避免大家走弯路;

1. 先讲关于Docker For Windows

Microsoft是所有软件行业回避不掉的,Docker官方开始支持Windows系统;

技术有2种,

1是docker toolbox,使用 Oracle VM Virtualbox运行一个可以部署docker的虚拟机,仅支持linux container;

2是 Docker for Windows Desktop,使用hypep-v运行一个可以部署docker的虚拟机,可以切换linux container和Windows container,同时只能1种,不同2个同时存在;

2. .Net 和 .Net core docker 区别

.Net core 是.Net的跨平台子集,可以支持linux 当然可以Windows;asp.net core 可以运行在linux container 的docker环境;

.Net core技术已经非常成熟了,我在园子部分页面的右下角看到了 asp.net core的标记,不知道是不是园子全是asp.net core的环境;

.Net是不能运行在linux container 的docker环境;只能运行在 Windows container,微软原生的容器中;

所以,支持 .Net core的docker是有2套的,1是linux container 2是Windows container,前者底层是linux 后者底层是Windows,以下图为例:

asp.net core docker demo程序的名称都是“microsoft/dotnet-samples”,

使用pull命令时,linux container 自动获取的是“版本 是 OS:Linux 4.9.125-linuxkit”

Windows container,自动获取的是基于Windows servercore的 10.几的版本号;

3. Windows container

先讲 微软发布的Windowsserver core,以下从网上复制的;

从 Windows Server 2008 开始,管理员可以选择安装具有特定功能但不包含任何不必要功能的 Windows Server 的最小安装服务器核心(Server Core),它为一些特定服务的正常运行提供了一个最小的环境,从而减少了其他服务和管理工具可能造成的攻击和风险。服务器核心并不支持所有的服务器角色,它只提供了运行以下一个或多个服务器角色的环境:Windows Server 虚拟化、动态主机配置协议 (DHCP) 服务器、域名系统 (DNS) 服务、 文件服务器、Active Directory 目录服务 (AD DS)、Active Directory 轻型目录服务 (AD LDS)、 Windows 媒体服务、打印管理等

同时服务器核心还支持以下特征:群集服务器,网络负载平衡,Unix子系统,Windows Server Backup,MPIO,Removable Storage Management,Windows BitLocker驱动器加密,SNMP,Single Instance Storage以及Telnet客户端等特征。

再讲 Windows container,

Windows container就是基于 Windows server core 的 docker环境;简单讲,可以支持所有Windows的非界面(gui)的后台服务和程序,例如asp.net网页,wcf,IIS服务,其他后台服务程序 等等;

microsoft/windowsservercore image 是基础,

4. Windows server 部署Docker

如果是学习,在win10用  docker toolbox 或 Docker for Windows Desktop 都可以;

生产环境怎么办?

微软从winserver2016开始支持原生的Windows container(基于 win 10.几版本号),docer 命令 与 windows powershell无缝集成;

本人在 winserver2019进行测试,操作Windows container 完全媲美 linux docker;,让Windows从业人员体会到全程 powershell命令行的快感;

注意:只支持powershell命令行,(除了Kitematic)其他linux下docker的界面操作环境都不支持;

在Windows container 环境下,Kitematic跟没有一样;在Windows下使用 linux docker,Kitematic还凑活;

5. Windows server 下 Windows container 的排他性;

在Windows server(以2019为例),原生只支持 Windows container ;通过手工下载和配置 “docker-machine-Windows-x86_64.exe”,可以支持 linux container ;单同时只能支持1种;

就生产环境而言,在 Windows server 下 运行  linux container  docker ,完全没有意义;

网上看到docker官方新闻,同时docker images,可以列出本机的 Windows container  和  linux container ;字面意思是可以同时支持 Windows container  和  linux container ;网上没有例子也没有资料;

仅有1位前辈提到1709版的server 2016支持2个共存,没有看到实例;

6. Windows docker 开发环境

在开发环境,因为mysql、oracle等,如果安装和切换,实在不方便,可以使用linux container来部署;随用遂启动,在不用的时候完全不占用本机的cpu内存资源;

7. windows docker 生产力环境:

国内仅看到携程的.net docker介绍,因为携程的.net 后台很多,是.net的企业应用大户,为了资源和效率,已经部署了好多.Windows container环境,仅此1家;

8. asp.net 不是 .net core,不是 .net core,不是 .net core;

验证成功,延伸出来,webserver,wcf等后台程序完全没有问题;Windows server 也可以享受docker的福利;

第一篇 Windows docker 概述的更多相关文章

  1. Docker 第一篇 认识Docker 的作用好处

    Docker 第一篇 认识Docker 的作用好处 (1)什么是Docker (2)Docker 优势劣势 Docker是去年开始关注并学习的,因为项目用到了AspnetCore 了解了之后总感觉会用 ...

  2. 第一篇 Windows 8 开发Windows Metro style app环境配置

    半   饱问 题 到 我 这 里 为 止! 第一篇 Windows 8 开发Windows Metro style app环境配置 2012-09-24 08:24 by 半饱, 1289 阅读, 3 ...

  3. 第一章 Windows内核概述

    第一章 Windows内核概述 这一章节描述了Windows内核知识中最重要的几个概念,这些话题在这本书之后会有更详细的描述,那些会与当前的主题密切相关.要确保你理解这个章节的概念,因为这些概念构成了 ...

  4. [第四篇]——Windows Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结

    Windows Docker 安装 Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境. Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境, ...

  5. 第一篇:docker 简单入门(一)

    本篇目录 写在最前面的话 docker概念介绍 镜像的概念.容器的概念 docker的安装介绍 写在最前面的话 由于此类文章博客园鉴定为简单文章,所以已经移到csdn[https://blog.csd ...

  6. Docker 第一篇--初识docker

    已经多年不写博客, 看完<晓松奇谈>最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络. 既然决定写, 那么首先就从最近2年热门的开源项目Docker开始.Docker 这两年在国内很 ...

  7. C++ Primer读书笔记(一)第一篇:C++概述,第一章:开始

    1. 主要内容 介绍程序语言的核心思想和C++的基本概念. 印象比较深刻的就是分而治之(divide and conque)的分解思想. 2. 知识广场 1) C++ 文件后缀 cc, cpp,,cx ...

  8. 深入理解ajax系列第一篇——XHR对象

    × 目录 [1]创建对象 [2]发送请求 [3]接收响应[4]异步处理[5]实例演示 前面的话 ajax是asynchronous javascript and XML的简写,中文翻译是异步的java ...

  9. 微信小程序教程(第一篇)

    目录 第一篇小程序概述 第二篇如何注册接入小程序及搭建开发环境 第三篇小程序的架构及实现机制,信道服务及会话管理 第四篇小程序开发基本框架及其限制与优化 第五篇小程序开发项目实例,测试及发布 .... ...

随机推荐

  1. 用SpringSecurity从零搭建pc项目-02

    参照这一篇文章吧,比如你不需要做的那么通用,取其中一部分代码即可. https://www.cnblogs.com/lihaoyang/p/8491792.html

  2. Android H5调起原生微信或支付宝支付

    Android H5调起原生微信或支付宝支付 WebView调用原生微信或支付宝回调:其原理就是在shouldOverrideUrlLoading(final WebView view, String ...

  3. ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(1)

    文章转自:http://www.xuboyi.com/298.html 前言 网站运营有一段时间了,记录的内容都是杂七杂八的,思前想后,决定给大家分享一套ASP.Net的系列教程.手把手的做一套通用后 ...

  4. Docker基础-端口映射与容器互联

    1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行一些网络应用,要让外部访问这些应用时, ...

  5. WPF TreeView 选择事件执行两次,获取TreeView的父节点的解决方法

    1.TreeView选择事件执行两次 Very often, we need to execute some code in SelectedItemChanged depending on the ...

  6. LoRa术语

    ADR      Adaptive Data Rate          自适应数据率 AES      Advanced Encryption Standard        高级加密标准 AFA  ...

  7. Java集合类源码解析:HashMap (基于JDK1.8)

    目录 前言 HashMap的数据结构 深入源码 两个参数 成员变量 四个构造方法 插入数据的方法:put() 哈希函数:hash() 动态扩容:resize() 节点树化.红黑树的拆分 节点树化 红黑 ...

  8. 【Tomcat】JVM,Tomcat,Servlet,Tomcat中的应用。彻底弄懂这些概念之间的联系

    tomcat和tomcat中的应用(即webapps下的war包)是运行在同一个jvm中的,但分工不同. tomcat的角色是“调度员”,而你的应用的角色是“工作者”,tomcat处理一个请求的大致过 ...

  9. java设计模式-----24、访问者模式

    概念: Visitor模式也叫访问者模式,是行为模式之一,它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作. 访问者模式的应用示例 比如有一个公园,有一到多个不同 ...

  10. 数据库导入导出expdp,impdp

    数据库操作 (1)数据库导入导出expdp,impdp 在导入导出数据库的时候,经常会用到exp和imp,在数据量小的情况下可以随意使用,但是当数据量大,表中数据有百万,千万条的时候,就要等好久好久好 ...