Docker入門 .Net Core 使用Docker全程記錄

http://www.javashuo.com/article/p-wcpdccpy-bm.htmlhtml

Docker入門 第一課 --.Net Core 使用Docker全程記錄

 

微服務架構無疑是當前最火熱的開發架構,而Docker做爲微服務架構的首選工具,是咱們必需要了解掌握的。git

我經過一天的時間,網上查文檔,瞭解基礎概念,安裝Docker,試驗Docker命令,經過Docker,成功部署運行Asp.NET core示例程序,算是基本入門。github

這篇文章是本身總結的Docker入門篇,力求簡潔,快速入門,以最短的時間看到學習成果,爲深刻學習Docker作基礎。docker

 

學習前提:不要畏懼 

面對未知,人們內心每每會產生恐懼,這是人與生俱來的,因此,咱們在進入新的領域以前,首先要克服的是本身的畏難心理。不要由於困難,看幾眼就放棄,那樣你永遠學不會。 windows

面對新的未知領域,咱們要把它當成一座燈塔,讓它指引咱們前進的方向。瀏覽器

 

第一:瞭解幾個概念 

鏡像(Image):相信你們看到這個詞,都明白什麼意思,咱們能夠把它理解爲操做系統的安裝盤,Ghost鏡像。我給它個定義,就叫:Docker基礎運行環境副本。 架構

容器(Container):運行中的Docker實例,稱爲容器。也就是一個鏡像(Image)的運行時狀態。 app

鏡像倉庫(Repository):Docker爲開發者提供了面向各類環境的已經打包好的鏡像,這些鏡像構成了一個鏡像倉庫。開發者只需找到本身須要的Docker鏡像,下載到本地,添加本身的應用上去,運行便可,某些工具類的鏡像,可無需修改,直接運行。asp.net

Docker 主機(Host):運行着Docker容器的計算機或虛擬機,用於執行Docker的守護進程。 微服務

Docker客戶端(Client):是與Docker主機守護進程進行通訊的工具,如:Docker控制檯。 

 

第二:安裝Docker

不一樣操做系統按照方式不一樣,以Win7系統爲例,須要利用 docker toolbox 來安裝,可使用阿里雲的鏡像來下載。

下載地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

安裝完成以後,在桌面找到三個啓動圖標:Oracle VM VirtualBox,Kitematic(Alpha),Docker Quickstart …。

安裝完成以後,建議重啓一下計算機。

  

Oracle VM VirtualBox :是一個虛擬機程序。Docker是運行在Linux環境下的,要想在Windows下運行,必須藉助虛擬機。感興趣的話能夠留着之後研究。

kitematic(alpha):是docker推出的GUI工具,能夠更簡便地操做Docker,很是適合windows用戶使用習慣,推薦你們試試。這個alpha表示預覽版吧,可能功能還不完善。

Docker Quickstart Terminal:是Docker控制檯啓動程序,雙擊圖標啓動Docker。

若是一切正常的話,能夠看到如下界面。

  

若是啓動過程當中出現下面錯誤,Looks like something went wrong in step 'Looking for vboxmanage.exe'…

意思是沒有找到虛擬機啓動程序,須要設置VirtualBox的環境變量,系統環境變量中增長VBOX_MSI_INSTALL_PATHVBOX_INSTALL_PATH 值都爲C:\Program Files\Oracle\VirtualBox\ ,即VirtualBox的安裝路徑,注意後面的\ 不能少。環境變量設置完成以後,可嘗試從新啓動。

 

  

第三:熟悉幾個命令 

我建議實際工做中使用圖形界面 kitematic,真的既簡單又實用,但Docker命令仍是要學習的,最重要的是,使用命令行操做顯得更酷更專業。

docker 命令都是以docker開頭,下面介紹幾個簡單,經常使用的命令。僅做基礎介紹,具體參數用法可後期詳細學習 。

docker pull:從鏡像倉庫中拉取鏡像 。

docker run:經過鏡像建立一個新的容器,並運行。須要注意的是,若是本地沒有指定的鏡像,會直接去鏡像庫下載,必定要保證拼寫正確。 

docker stop:中止一個容器 。

docker start:啓動一個容器 。

docker restart:重啓一個容器 。

docker ps:列出當前運行的容器機器狀態 。

docker images 或 docker image ls:列出本地鏡像。

docker build:使用Dockerfile建立本身的鏡像。

  

第四:操做演示,從hello world開始

你能夠登陸Docker官方鏡像倉庫,選擇本身感興趣的鏡像進行試驗,這裏咱們選擇最簡單的 hello-world。

Docker官方鏡像倉庫地址:https://hub.docker.com 

 

拉取(下載)鏡像,在docker控制檯界面,輸入命令:docker pull hello-world

鏡像很小,下載很快完成,而後查看一下本地鏡像,輸入命令:docker images

不出問題的話,應該能夠看到hello-world的鏡像文件,運行鏡像,輸入命令:docker run hello-world

而後能夠看到,控制檯返回信息提示,Docker已經正常運行。 

第五:建立本身的Docker鏡像

建立鏡像須要使用Dockerfile文件,下面以asp.net core 爲例,建立一個本身的鏡像,示例中已經建立好了Dockerfile文件,直接使用便可,具體內容留着之後研究。

操做參考:爲 .NET Core 應用程序生成 Docker 映像:https://docs.microsoft.com/zh-cn/dotnet/core/docker/building-net-docker-images 

首先:確保已經安裝了Dotnet Core 2.0

而後:下載asp.net core 示例代碼 :git clone https://github.com/dotnet/dotnet-docker-samples/

進入項目代碼目錄,運行示例,測試一下

cd aspnetapp

dotnet run

應用程序啓動後,在 Web 瀏覽器中訪問 http://localhost:5000。好了,一切正常,沒問題。

建立鏡像,輸入Docker命令:

docker build -t aspnetapp .

生成鏡像的過程須要下載依賴鏡像包,大概須要十多分鐘,執行過程當中不要關閉控制檯。 

鏡像生成完成以後,運行一下試試:

docker run -it -p 5002:80 --name aspnetcore aspnetapp 

啓動完成,打開瀏覽器:http://192.168.99.100:5002/

說明:-p 5002:80 表示將Docker主機的5002端口和Docker容器的80端口進行關聯映射,即,外部訪問使用5002端口,容器內部使用80端口,即 HTTP服務端口。

注意:這裏是IP地址,至於這個IP是怎麼來的,說實話,我也不知道,我嘗試了幾回,始終不能訪問,而後打開kitematic,才發現只有這個IP才能訪問。[哭臉]

 

 後記:

當看到程序正常啓動運行時,是否是滿滿的成就感,學習就這麼簡單,最重要的是下定決心邁出行動的第一步。

本篇文章力求簡潔,力圖儘快看到學習成果,算是給你們深刻學習提供的一塊敲門磚,墊腳石。

另外文中的概念都是我本身理解的,可能跟標準答案不符,僅供理解和參考。

推薦幾個深刻學習的網址:

Docker官方鏡像倉庫:https://hub.docker.com 

Docker菜鳥教程:http://www.runoob.com/docker/docker-tutorial.html

Docker入門教程:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

爲 .NET Core 應用程序生成 Docker 映像:https://docs.microsoft.com/zh-cn/dotnet/core/docker/building-net-docker-images 

相關文章
相關標籤/搜索