偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

docker4dotnet #1 – 前世今生 & 世界你好

企業(yè)動(dòng)態(tài)
本文是 Docker for .NET Developer (D4D) 系列的開(kāi)始,大家可以看到借助Visual Studio一貫強(qiáng)大的開(kāi)發(fā)和調(diào)試能力和Docker的環(huán)境隔離能力,可以大大提高開(kāi)發(fā)效率。

docker

作為一名.NET Developer,這幾年看著docker的流行實(shí)在是有些眼饞??上У氖?,Docker是基于Linux環(huán)境的,眼瞧著那些 java, python, node.js, go 甚至連php程序員都可以docker了,自己還在苦哈哈的裝虛擬機(jī),實(shí)在是急啊!所以對(duì)于.NET Core的發(fā)展格外關(guān)注,因?yàn)樗目缙脚_(tái),意味著.NET Developer也可以docker了。

前世今生

.NET core 1.0

.NET core 1.0并不是對(duì)原有的.net平臺(tái)的升級(jí),而是一次全新的重寫(xiě),這個(gè)開(kāi)發(fā)過(guò)程微軟也史無(wú)前例的采用了全面開(kāi)源的做法,在github上接受全球開(kāi)發(fā)者的pull request。從上圖可以看出,.NET core與現(xiàn)有的.net framework是并行的,是完全獨(dú)立發(fā)展的一套開(kāi)發(fā)平臺(tái)。與之前的.net framework***的區(qū)別在于跨平臺(tái),同時(shí)支持Windows/macOS/Linux 這三大操作系統(tǒng)。在GitHub上.NET Core的發(fā)布時(shí)間線可以看到在過(guò)去的2年里,微軟一步步的將.NET 從Windows操作系統(tǒng)上剝離,逐步添加了對(duì)macOS和Linux操作系統(tǒng)的支持,同時(shí)與開(kāi)源社區(qū)的合作也在逐步加深。

– 2014年7月 - 微軟在github上發(fā)布了asp.net vNext(也就是asp.net 5)的前身,這時(shí)還是alpha階段

– 2014年11月 - 發(fā)布了beta1,并且開(kāi)始使用asp.net 5的名稱(chēng)

– 2015年10月 - 發(fā)布了beta8,這是***的一個(gè)beta版本,這一年的時(shí)間里,微軟逐步提供了對(duì)于macOS和Linux操作系統(tǒng)的支持;同時(shí)隨著 Visual Studio Code 這個(gè)跨平臺(tái)代碼編輯器的流行,大家慢慢開(kāi)始關(guān)注asp.net 5

– 2015年11月 - 發(fā)布了RC1,標(biāo)志著asp.net 5基本具備了使用在生產(chǎn)環(huán)境的能力

– 2016年6月27日 - 在RedHat全棧開(kāi)發(fā)者大會(huì)DevNation上,微軟與RedHat攜手發(fā)布了Asp.net Core 1.0,標(biāo)志著微軟這一跨平臺(tái)開(kāi)發(fā)工具的正式發(fā)布。

為什么是Docker?

我們?cè)賮?lái)看看docker,這個(gè)2013年才發(fā)布的開(kāi)源項(xiàng)目從一開(kāi)始就引起了全球開(kāi)發(fā)者的極大關(guān)注,在發(fā)布4個(gè)月的時(shí)間里下載量就超過(guò)50000次, github上收到超過(guò)4000個(gè)star,涌現(xiàn)了超過(guò)100個(gè)貢獻(xiàn)者,并且有超過(guò)150個(gè)項(xiàng)目和超過(guò)1000個(gè)產(chǎn)品開(kāi)始使用docker。1年之內(nèi),RedHat和AWS就宣布為Docker提供官方支持,在這樣大的關(guān)注下,連Docker自己的CEO都勸說(shuō)全球的開(kāi)發(fā)者暫時(shí)不要將Docker用于生產(chǎn)環(huán)境。2014年6月,Docker發(fā)布了1.0版本,這時(shí)Docker的下載量已經(jīng)超過(guò)275萬(wàn),到今天這個(gè)數(shù)字已經(jīng)超過(guò)了10億。

為什么小編對(duì)docker如此垂涎,此話要從“修電腦”說(shuō)起。作為一名程序員,誰(shuí)沒(méi)有修過(guò)電腦,誰(shuí)沒(méi)有被叫去修過(guò)電腦,誰(shuí)沒(méi)有被認(rèn)為很會(huì)修電腦 … … 可是,你有想過(guò)為啥我們這樣擅長(zhǎng)修電腦么?難道真的是因?yàn)榕菝米用?那都是副產(chǎn)品好么!!!

故事 … … 一個(gè)月前接了一個(gè)項(xiàng)目,用的是XXX技術(shù),搭建好了環(huán)境,熱火朝天干了一個(gè)月;今天項(xiàng)目經(jīng)理說(shuō)這里還有另外項(xiàng)目的一些小問(wèn)題需要處理,你來(lái)看看吧,用不了多少時(shí)間。結(jié)果你發(fā)現(xiàn)這個(gè)項(xiàng)目用的是YYY的技術(shù),搭建環(huán)境就化了你半天時(shí)間,這時(shí)候項(xiàng)目經(jīng)理電話來(lái)了:“為啥還沒(méi)搞完?啥,環(huán)境還沒(méi)搞好,算了,你別搞了,我找別人!“。好吧,苦逼的你回去繼續(xù)原來(lái)的項(xiàng)目,發(fā)現(xiàn)XXX環(huán)境的變量被YYY搞亂了,改了很久也搞不好 … … 結(jié)果就是:從!裝!電!腦!

程序員就這樣變成裝機(jī)高手!再后來(lái)的程序員開(kāi)始使用虛擬機(jī),把開(kāi)發(fā)環(huán)境放到虛擬機(jī)中,這樣就不用擔(dān)心不同環(huán)境之間互相沖突,不過(guò)虛擬機(jī)動(dòng)輒幾十個(gè)G的硬盤(pán)占用和巨大的CPU和內(nèi)存開(kāi)銷(xiāo)讓電腦變得慢吞吞的,本來(lái)i7的機(jī)器只能享受到i3的性能,太浪費(fèi)了。

這就是為啥docker成為了全球程序員的福音:

– 不必?fù)?dān)心新接手的項(xiàng)目環(huán)境搭建復(fù)雜;

– 不必?fù)?dān)心同時(shí)開(kāi)發(fā)2個(gè)環(huán)境互相沖突的項(xiàng)目;

– 不會(huì)再占用大量的內(nèi)存和硬盤(pán),環(huán)境啟動(dòng)迅速,啟動(dòng)一個(gè)容器只需要幾秒鐘,而虛擬機(jī)需要幾分鐘;就算是8G內(nèi)存也可以同時(shí)跑多個(gè)容器,而虛擬機(jī)能跑2個(gè)就不錯(cuò)了;

– 直接把做好的應(yīng)用丟給測(cè)試,測(cè)試不必自己再?gòu)男麓罱ōh(huán)境,要恢復(fù)干凈的測(cè)試環(huán)境也只是一個(gè)命令而已;

– 直接把測(cè)試好的應(yīng)用丟給運(yùn)維去部署,不用去和運(yùn)維撕扯 jdk 1.8還是1.7

– 環(huán)境壞掉了,換個(gè)新的,不用費(fèi)勁去看log,恢復(fù)這恢復(fù)那

– 不用擔(dān)心你旁邊的程序員用了不同版本的jdk,他的環(huán)境就是你的環(huán)境,哪怕你用的本本上是win7,他在用高大上的macbook pro

這不是程序員的天堂么? 這就是docker帶給我們的,這就是為啥程序員們急不可耐的開(kāi)始使用docker,而且愿意沖破阻力讓運(yùn)維去接受docker,這種事情在歷史上好像沒(méi)有出現(xiàn)過(guò);從來(lái)都是運(yùn)維要求開(kāi)發(fā)使用標(biāo)準(zhǔn)化環(huán)境的。

其實(shí)Docker所解決就是一直困擾每一名IT人的環(huán)境不統(tǒng)一問(wèn)題;這個(gè)問(wèn)題隨著各種技術(shù),框架和平臺(tái)的爆炸性增長(zhǎng)最終成為應(yīng)用開(kāi)發(fā)效率的***殺手,讓開(kāi)發(fā)者和企業(yè)付出巨大的努力和金錢(qián)。無(wú)論是從組織和流程層面的ITSM,還是從敏捷化角度推行的DevOps,或是自動(dòng)化(如:Chef/Puppet等)都沒(méi)有跳出這個(gè)問(wèn)題所形成的漩渦。這些方法或者工具試圖用復(fù)雜的方法來(lái)適應(yīng)復(fù)雜的環(huán)境,而Docker則是用一種逆向思維的方式來(lái)解決這個(gè)問(wèn)題,用簡(jiǎn)單的方法來(lái)解決復(fù)雜的問(wèn)題,很有點(diǎn)四兩撥千斤的感覺(jué)!

為啥它的名字叫做Docker:因?yàn)镈ocker所使用的容器技術(shù)(Containers)就來(lái)自于運(yùn)輸行業(yè)的集裝箱(Containers)的思路。運(yùn)輸行業(yè)在60年代遭遇了同樣的問(wèn)題,大家希望運(yùn)送的物品各式各樣,尺寸不一,這給運(yùn)送過(guò)程造成了極大的麻煩。這就如同我們需要將不同環(huán)境,不同版本的應(yīng)用從開(kāi)發(fā)運(yùn)送到測(cè)試,再運(yùn)送到生產(chǎn)。

Docker名字來(lái)源

于是集裝箱開(kāi)始出現(xiàn),運(yùn)輸公司將不同尺寸的物品裝入統(tǒng)一的集裝箱,這樣無(wú)論是卡車(chē),碼頭機(jī)械,飛機(jī)和輪船的貨倉(cāng)都可以按照標(biāo)準(zhǔn)化的集裝箱尺寸進(jìn)行設(shè)計(jì),極大的提高了效率,降低了成本。Docker在這里就起到了這個(gè)集裝箱的作用,讓開(kāi)發(fā)人員可以按照需要將環(huán)境和應(yīng)用裝入容器,而測(cè)試和運(yùn)維人員只需要運(yùn)送和裝載。

Docker借用了集裝箱運(yùn)輸?shù)乃悸? title=

Docker借用了集裝箱運(yùn)輸?shù)乃悸?,將?yīng)用所需要的所有環(huán)境一同打包,同時(shí)采用輕量級(jí)的虛擬化技術(shù)在操作系統(tǒng)之上提供一個(gè)相對(duì)隔離的運(yùn)行時(shí)空間。這樣,開(kāi)發(fā)人員就可以直接完成依賴(lài)環(huán)境與應(yīng)用本身的打包,而測(cè)試/運(yùn)維人員只需要進(jìn)行裝載操作。

Docker借用了集裝箱運(yùn)輸?shù)乃悸? title=

開(kāi)發(fā)環(huán)境選擇

要使用Docker來(lái)開(kāi)發(fā).NET Core應(yīng)用程序,你可以選擇自己喜歡的操作系統(tǒng)和工具,在這個(gè)系列文章里面,我會(huì)介紹2個(gè)最常見(jiàn)的開(kāi)發(fā)環(huán)境

– Windows + Visual Studio 2015 + Docker for Windows

– macOS + Visual Studio Code + Docker for Mac

部署環(huán)境上,我將使用微軟的Azure和亞馬遜的AWS來(lái)實(shí)現(xiàn)測(cè)試和生產(chǎn)環(huán)境的部署,并且借助Visual Studio Team Service 作為DevOps工具鏈來(lái)實(shí)現(xiàn)從開(kāi)發(fā)-測(cè)試-生產(chǎn)的發(fā)布管道(Release Pipeline)的建立。

Docker 世界,你好!

今天我先來(lái)看看最簡(jiǎn)單的場(chǎng)景,在Windows 10上面搭建Docker for Windows 開(kāi)發(fā)環(huán)境,并使用Visual Studio 2015和Docker for Visual Studio插件來(lái)完成一個(gè).net Core 應(yīng)用的創(chuàng)建和調(diào)試。

1. 在 Windows 上面安裝 Docker for Windows

Docker for Windows是Docker公司為使用Windows的開(kāi)發(fā)人員提供的開(kāi)發(fā)和測(cè)試環(huán)境,他的前身是Docker Toolbox。Docker for Windows和Docker Toolbox的區(qū)別在于前者使用Hyper-V提供虛擬化支持,Docker Toolbox使用VirtualBox。因此,如果你使用的是Windows 10操作系統(tǒng),你可以使用Docker for Windows,如果使用的是更老的操作系統(tǒng),則可以使用Docker Toolbox。

可以從以下地址下載這2個(gè)工具:

https://docs.docker.com/engine/installation/windows/

(請(qǐng)關(guān)注公眾號(hào) devopshub,并在消息中輸入 d4dtools 獲取本文中所提到的工具)

在這篇文章里面我使用的是 Docker for Windows 和 Windows 10的環(huán)境,Docker for Windows 對(duì) Windows 10的版本也是有要求的,***需要 Version 1511 (OS Build 10586)以上才可以,你可以在通過(guò)winver命令來(lái)查看自己的版本信息。

 Windows 10

安裝過(guò)程非常簡(jiǎn)單,直接雙擊下載好的安裝包,一直下一步就可以完成。在這個(gè)過(guò)程中,如果你的機(jī)器還沒(méi)有啟用Hyper-V,安裝程序會(huì)自動(dòng)啟用。如果你的Windows 10本來(lái)就是一臺(tái)虛擬機(jī),那么根據(jù)你所使用的虛擬化工具的不同,可以啟動(dòng)虛擬化嵌套,也就是在虛擬機(jī)里面運(yùn)行虛擬機(jī)。

安裝好以后一定要記得要使用管理員權(quán)限啟動(dòng) Docker for Windows,否則 Docker for Windows 將無(wú)法與Hyper-V控制臺(tái)通訊,造成環(huán)境啟動(dòng)失敗。

用管理員權(quán)限啟動(dòng) Docker for Windows

Docker for Windows 啟動(dòng)成功后會(huì)彈出系統(tǒng)通知,

Docker for Windows 啟動(dòng)成功后會(huì)彈出系統(tǒng)通知

同時(shí)在Hyper-V 控制臺(tái)中可以看到一臺(tái)LinuxVM正在運(yùn)行。

同時(shí)在Hyper-V 控制臺(tái)中可以看到一臺(tái)LinuxVM正在運(yùn)行

以上過(guò)程可以看出,Docker for Windows的工作機(jī)制實(shí)際上是在 Hyper-V 中運(yùn)行了一臺(tái)運(yùn)行了Docker Daemon (駐守程序)的虛擬機(jī),并將Windows上運(yùn)行的Docker命令行工具指向了這臺(tái)虛擬機(jī)中的docker環(huán)境。而對(duì)于開(kāi)發(fā)者而言,我們只需要在Windows上運(yùn)行cmd或者powershell命令行,就可以使用同樣的docker 命令進(jìn)行操作了。

Docker for Windows的工作機(jī)制

2. 安裝 Docker for Visual Studio 插件

Visual Studio 強(qiáng)大的開(kāi)發(fā)和調(diào)試能力對(duì)于提升效率有很大的幫助,為了能夠提供基于docker的開(kāi)發(fā)調(diào)試體驗(yàn),微軟提供了一個(gè) Docker Tools for Visual Studio 插件。

如果你還沒(méi)有安裝 Visual Studio 2015,可以在以下地址下載***的社區(qū)版,這個(gè)版本完全免費(fèi),同時(shí)也支持加載插件。

https://www.visualstudio.com/products/visual-studio-community-vs

(請(qǐng)關(guān)注公眾號(hào) devopshub,并在消息中輸入 d4dtools 獲取本文中所提到的工具)

安裝 Docker for Visual Studio 插件

安裝好以后,打開(kāi) Tools | Extensions and Update 菜單,輸入 docker 進(jìn)行搜索,就可以找到這個(gè)插件:

打開(kāi) Tools | Extensions and Update 菜單,輸入 docker 進(jìn)行搜索

下載地址:

https://visualstudiogallery.msdn.microsoft.com/0f5b2caa-ea00-41c8-b8a2-058c7da0b3e4

(請(qǐng)關(guān)注公眾號(hào) devopshub,并在消息中輸入 d4dtools 獲取本文中所提到的工具)

3. 準(zhǔn)備 .NET Core 環(huán)境

首先,進(jìn)入 .NET Core 的 Windows 環(huán)境主頁(yè) ,按照要求下載和安裝 .NET Core 1.0 for Visual Studio,下載地址如下

https://go.microsoft.com/fwlink/?LinkId=817245

NET Core 的 Windows 環(huán)境主

安裝后就可以在Visual Studio 中創(chuàng)建.NET Core 應(yīng)用了。

4. 在 Visual Studio 2015 中創(chuàng)建.NET Core Web App

點(diǎn)擊 File | New | Project …,打開(kāi)項(xiàng)目創(chuàng)建引導(dǎo),并選擇 ASP.NET Core Web Application (.NET Core) 項(xiàng)目類(lèi)型

Visual Studio 2015 中創(chuàng)建.NET Core Web App

在模板頁(yè)中選擇 Web Application 模版,并點(diǎn)擊OK,進(jìn)行創(chuàng)建

Visual Studio 2015 中創(chuàng)建.NET Core Web App

創(chuàng)建完成后 Visual Studio 會(huì)自動(dòng)運(yùn)行dotnet restore命令恢復(fù)項(xiàng)目依賴(lài),等待這一過(guò)程完成,然后按F5測(cè)試一下,正常情況下你可以看到以下初始的網(wǎng)站狀態(tài)。

Visual Studio 2015 中創(chuàng)建.NET Core Web App

5. 啟用 Docker Support,并使用Docker環(huán)境進(jìn)行調(diào)試

在項(xiàng)目節(jié)點(diǎn)上右鍵單擊,并選擇 Add | Docker Support

啟用 Docker Support

這時(shí),你項(xiàng)目里面會(huì)多出以下2部分內(nèi)容

啟用 Docker Support

(1)這里是對(duì)Visual Studio 進(jìn)行配置,確保 Visual Studio 的工具鏈會(huì)正確與 docker 環(huán)境集成

(2)這里是對(duì)Docker自己的環(huán)境配置,包括 Dockerfile 和 Docker Compose file (這部分的具體內(nèi)容在后續(xù)的文章中給大家介紹),另外還有一個(gè) DockerTask.ps1。

DockerTask.ps1 是一個(gè) powershell 腳本,Visual Studio 和 Docker 的交互其實(shí)都是通過(guò)這個(gè)腳本來(lái)完成的,這里貼出這個(gè)腳本的參數(shù)部分,你會(huì)看到腳本中對(duì)常用的docker命令又進(jìn)行了一層封裝,讓docker可以更好的配合Visual Studio的工具鏈調(diào)用。這個(gè)腳本非常有用,特別是在沒(méi)有 Visual Studio 的情況下,你完全可以借助這個(gè)腳本手動(dòng)完成工具鏈的構(gòu)建。

DockerTask.ps1

現(xiàn)在,你會(huì)發(fā)現(xiàn)在 Visual Studio的運(yùn)行狀態(tài)欄中多了一個(gè) Docker 的選項(xiàng),意味著我們可以直接點(diǎn)擊這個(gè)按鈕或者F5,就可以將應(yīng)用部署到本地的 Docker for Windows 環(huán)境,并開(kāi)始調(diào)試了。

運(yùn)行起來(lái)的效果如下

你可以看到我在Controller里面添加了一行代碼來(lái)獲取本地的機(jī)器名,在容器里面獲取到的就是這個(gè)容器的id,同時(shí)在這里還可以設(shè)置斷點(diǎn);在docker中運(yùn)行的應(yīng)用會(huì)中斷,你可以像調(diào)試一個(gè)普通的ASP.NET應(yīng)用一樣來(lái)調(diào)試這個(gè)運(yùn)行在Docker中的應(yīng)用。

【本文為51CTO專(zhuān)欄作者“徐磊”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)devopshub獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2017-02-14 16:39:56

docker容器化主機(jī)

2017-02-14 19:57:27

docker云存儲(chǔ)Azure

2022-03-04 08:45:11

Docker開(kāi)源Linux

2017-02-14 20:15:15

docker容器持續(xù)交付

2011-08-23 09:52:31

CSS

2015-11-18 14:14:11

OPNFVNFV

2014-07-30 10:55:27

2025-02-12 11:25:39

2016-11-03 13:33:31

2016-11-08 19:19:06

2014-07-21 12:57:25

諾基亞微軟裁員

2016-12-29 18:21:01

2019-06-04 09:00:07

Jenkins X開(kāi)源開(kāi)發(fā)人員

2021-06-17 07:08:19

Tapablewebpack JavaScript

2016-12-29 13:34:04

阿爾法狗圍棋計(jì)算機(jī)

2014-07-15 10:31:07

asyncawait

2012-05-18 16:54:21

FedoraFedora 17

2013-05-23 16:23:42

Windows Azu微軟公有云

2021-08-26 10:36:02

人臉識(shí)別人工智能技術(shù)

2021-04-15 07:01:28

區(qū)塊鏈分布式DLT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)