第一篇 Windows docker 概述

本人行業屬於智能製造,偏向工廠應用,客戶端程序所有是.Net 的 WinForm;本系統的後臺是.Net,多系統交互的有java的;因系統發佈效率問題,想採用docker Windows 的生產力環境;java

  • docker 技術原理,和好處在此不過多描述,你們都說好;mysql

  • 主要學習 Windows containers的應用,是 Windows原生容器;不是linux,不是linux,不是linux,重要的事情說三遍;

   下面把學習中遇到的坑描述好,避免你們走彎路;linux

1. 先講關於Docker For Windowsweb

    Microsoft是全部軟件行業迴避不掉的,Docker官方開始支持Windows系統;sql

    技術有2種,docker

    1是docker toolbox,使用 Oracle VM Virtualbox運行一個能夠部署docker的虛擬機,僅支持linux container;shell

    2是 Docker for Windows Desktop,使用hypep-v運行一個能夠部署docker的虛擬機,能夠切換linux container和Windows container,同時只能1種,不一樣2個同時存在;windows

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.幾的版本號;

image

 

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的福利;

相關文章
相關標籤/搜索