本人行业属于智能制造,偏向工厂应用,客户端程序全部是.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. Java操作word文档使用JACOB和POI操作word,Excel,PPT需要的jar包

    可参考文档: http://wibiline.iteye.com/blog/1725492 下载jar包 http://download.csdn.net/download/javashixiaofe ...

  2. windows cmd窗口提示“telnet”命令不能内部或外部命令,也不是可运行的程序

    windows cmd窗口提示“telnet”命令不能内部或外部命令,也不是可运行的程序 原因:C:\Windows\System32目录下没有telnet.exe,path系统变量的值包含了C:\W ...

  3. Eclipse安装ModelGoon控件(ModelGoon控件反向生成UML)

    Eclipse安装ModelGoon 1 下载ModelGoon到本地,放在eclipse的安装目录下 2 打开Eclipse,点击Help,选择Install new software 3 点击ad ...

  4. Jenkins使用TFS部署

    之前发表过一篇Jenkins的文章 使用Jenkins部署.Net应用程序 里面是使用GIT做的版本管理 今天更新下使用TFS做版本管理 首先在插件管理中搜索tfs,我这里因为已经装了,所以在已安装列 ...

  5. 只用一招,让你Maven依赖下载速度快如闪电

    一.背景 众所周知,Maven对于依赖的管理让我们程序员感觉爽的不要不要的,但是由于这货是国外出的,所以在我们从中央仓库下载依赖的时候,速度如蜗牛一般,让人不能忍,并且这也是大多数程序员都会遇到的问题 ...

  6. @Async的使用

    从Spring3.x 开始,加入@Async这个注解,用户异步线程处理,使用起来很方便. 使用配置如下:spring-task.xml <task:executor id="execu ...

  7. Git 管理项目

    一个很小的HTML项目,使用.Git来记录和跟踪这个项目.包括以下内容: 创建版本库. 添加与修改文件. 创建新分支. 打标签并整理版本库. 克隆版本库. 创建版本库 Creating a Repos ...

  8. Huffman树与编码

    带权路径最小的二叉树称为最优二叉树或Huffman(哈夫曼树). Huffman树的构造 将节点的权值存入数组中,由数组开始构造Huffman树.初始化指针数组,指针指向含有权值的孤立节点. b = ...

  9. 并发编程之 Thread 类过期方法和常用方法

    前言 在 Java 刚诞生时,Thread 类就已经有了很多方法,但这些方法由于一些原因(有一些明显的bug或者设计不合理)有些已经废弃了,但是他们的方法名却是非常的好,真的是浪费.我们在进行并发必编 ...

  10. 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。 注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。

    如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...