https://www.cnblogs.com/flame7/p/9210986.html
Docker入門 第一課 --.Net Core 使用Docker全程記錄
微服務架構無疑是當前最火熱的開發架構,而Docker作為微服務架構的首選工具,是我們必須要了解掌握的。
我通過一天的時間,網上查文檔,了解基礎概念,安裝Docker,試驗Docker命令,通過Docker,成功部署運行Asp.NET core示例程序,算是基本入門。
這篇文章是自己總結的Docker入門篇,力求簡潔,快速入門,以最短的時間看到學習成果,為深入學習Docker做基礎。
學習前提:不要畏懼
面對未知,人們心里往往會產生恐懼,這是人與生俱來的,所以,我們在進入新的領域之前,首先要克服的是自己的畏難心理。不要因為困難,看幾眼就放棄,那樣你永遠學不會。
面對新的未知領域,我們要把它當成一座燈塔,讓它指引我們前進的方向。
第一:了解幾個概念
鏡像(Image):相信大家看到這個詞,都明白什么意思,我們可以把它理解為操作系統的安裝盤,Ghost鏡像。我給它個定義,就叫:Docker基礎運行環境副本。
容器(Container):運行中的Docker實例,稱為容器。也就是一個鏡像(Image)的運行時狀態。
鏡像倉庫(Repository):Docker為開發者提供了面向各種環境的已經打包好的鏡像,這些鏡像構成了一個鏡像倉庫。開發者只需找到自己需要的Docker鏡像,下載到本地,添加自己的應用上去,運行即可,某些工具類的鏡像,可無需修改,直接運行。
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