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_PATH和VBOX_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