成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

docker

作為一名.NET Developer,這幾年看著docker的流行實在是有些眼饞。可惜的是,Docker是基于Linux環(huán)境的,眼瞧著那些 java, python, node.js, go 甚至連php程序員都可以docker了,自己還在苦哈哈的裝虛擬機,實在是急啊!所以對于.NET Core的發(fā)展格外關(guān)注,因為它的跨平臺,意味著.NET Developer也可以docker了。

前世今生

.NET core 1.0

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

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

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

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

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

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

為什么是Docker?

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

為什么小編對docker如此垂涎,此話要從“修電腦”說起。作為一名程序員,誰沒有修過電腦,誰沒有被叫去修過電腦,誰沒有被認為很會修電腦 … … 可是,你有想過為啥我們這樣擅長修電腦么?難道真的是因為泡妹子么?那都是副產(chǎn)品好么!!!

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

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

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

– 不必擔心新接手的項目環(huán)境搭建復雜;

– 不必擔心同時開發(fā)2個環(huán)境互相沖突的項目;

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

– 直接把做好的應用丟給測試,測試不必自己再從新搭建環(huán)境,要恢復干凈的測試環(huán)境也只是一個命令而已;

– 直接把測試好的應用丟給運維去部署,不用去和運維撕扯 jdk 1.8還是1.7

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

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

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

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

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

Docker名字來源

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

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

Docker借用了集裝箱運輸?shù)乃悸罚瑢盟枰乃协h(huán)境一同打包,同時采用輕量級的虛擬化技術(shù)在操作系統(tǒng)之上提供一個相對隔離的運行時空間。這樣,開發(fā)人員就可以直接完成依賴環(huán)境與應用本身的打包,而測試/運維人員只需要進行裝載操作。

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

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

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

– Windows + Visual Studio 2015 + Docker for Windows

– macOS + Visual Studio Code + Docker for Mac

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

Docker 世界,你好!

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

1. 在 Windows 上面安裝 Docker for Windows

Docker for Windows是Docker公司為使用Windows的開發(fā)人員提供的開發(fā)和測試環(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個工具:

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

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

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

 Windows 10

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

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

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

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

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

同時在Hyper-V 控制臺中可以看到一臺LinuxVM正在運行。

同時在Hyper-V 控制臺中可以看到一臺LinuxVM正在運行

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

Docker for Windows的工作機制

2. 安裝 Docker for Visual Studio 插件

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

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

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

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

安裝 Docker for Visual Studio 插件

安裝好以后,打開 Tools | Extensions and Update 菜單,輸入 docker 進行搜索,就可以找到這個插件:

打開 Tools | Extensions and Update 菜單,輸入 docker 進行搜索

下載地址:

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

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

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

首先,進入 .NET Core 的 Windows 環(huán)境主頁 ,按照要求下載和安裝 .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 應用了。

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

點擊 File | New | Project …,打開項目創(chuàng)建引導,并選擇 ASP.NET Core Web Application (.NET Core) 項目類型

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

在模板頁中選擇 Web Application 模版,并點擊OK,進行創(chuàng)建

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

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

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

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

在項目節(jié)點上右鍵單擊,并選擇 Add | Docker Support

啟用 Docker Support

這時,你項目里面會多出以下2部分內(nèi)容

啟用 Docker Support

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

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

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

DockerTask.ps1

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

運行起來的效果如下

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

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

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

責任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2017-02-14 16:39:56

docker容器化主機

2017-02-14 19:57:27

docker云存儲Azure

2022-03-04 08:45:11

Docker開源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開源開發(fā)人員

2021-06-17 07:08:19

Tapablewebpack JavaScript

2016-12-29 13:34:04

阿爾法狗圍棋計算機

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ù)

2021-04-15 07:01:28

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

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

主站蜘蛛池模板: 在线免费观看黄视频 | 精品久久久久久久久久 | 久久久久精 | 伊人一区 | 午夜av一区二区 | 99久久久无码国产精品 | 91视视频在线观看入口直接观看 | 色资源av| 亚洲成人精品一区二区 | 久久精品欧美电影 | 亚洲第一在线 | 最新国产精品视频 | 精品视频一区二区 | 91精品国产91久久综合桃花 | 中文字幕亚洲精品在线观看 | 337p日本欧洲亚洲大胆 | 青草福利 | 操人视频在线观看 | 精品国产91 | 天天拍天天操 | 久久精品91久久久久久再现 | 男女视频免费 | 狠狠狠干 | 日本一区二区三区免费观看 | 久久久久亚洲精品 | 日韩中文字幕在线观看 | 综合久久亚洲 | 国产精品毛片在线 | 欧美日韩在线观看视频网站 | 97人澡人人添人人爽欧美 | 每日更新av | 亚洲美女在线一区 | 欧美精品片 | 亚洲精品乱码久久久久久久久 | 国产黄色av网站 | 日韩综合在线视频 | 日本不卡在线观看 | 青青操av| 久久在线看 | 狠狠干狠狠操 | 中文在线一区 |