Asp.Net Core 使用Docker進行容器化部署(一)

 前幾篇文章介紹了Liunx下的環境搭建,今天來分享一下.Net Core在Liunx上的部署。web

我採用的方案是使用Dokcer做爲運行虛擬機,Nginx做爲Http服務器來進行反向代理,你能夠理解爲Docker就是程序的運行環境,而Nginx就是以前用的IIS。docker

文章分紅兩篇,第一篇寫Docker部署,第二篇寫Nginx代理。vim

1、編寫Dockerfilebash

Dockerfile中記錄了咱們的程序在Docker環境中的各類配置服務器

FROM microsoft/dotnet    #FROM 指定功能所需的基礎鏡像,必須是第一條指令,咱們這裏指定aspnetcore
WORKDIR /web                 #定義你工做目錄的名字
COPY . ./                    #COPY 程序所在本地目錄  容器目錄  例如:COPY ${source:-bin/publish} ./hello 把source所在的目錄下的,bin/publish子目錄的內容複製到容器的hello目錄
ENTRYPOINT ["dotnet", "CZKJ.CMS.Web.dll"]      #運行dotnet命令,參數是你的程序集的入口dll--就是你的Web程序dll

配置還有不少例如EXPOSE能夠指定對外開放的端口,若是不指定就是默認80,以上幾個配置足夠通常的.NetCore程序使用,以上配置copy下來能夠直接使用只須要更改最下面一行的程序集名字就好。

寫好Dockerfile後把Dockerfile放到你的包根目錄下,文件不要加後綴名就只叫:Dockerfile工具

 

2、生成鏡像ui


使用WinScp把你的程序集放到Liunx服務器上,WinScp是一個很好用工具,推薦下載並且免費。spa

而後遠程連接到你的Liunx服務器,推薦一個小工具:Putty很好用的小工具代理

CD到剛纔上傳上來的目錄中:cd /website/PublishOutput    注意要到文件夾裏rest

在這裏運行Docker 命令:docker build -t <要生成的鏡像的名稱>  .  (注意,結尾有個點,這個點是Dockerfile的路徑,由於Dockerfile如今就在當前目錄下,因此打個點就行,-t 參數後的鏡像名字不須要打<>)

例如: dcoerk build -t demo .

Docker 會根據剛纔配置的Dockerfile生成鏡像,最後出現Successfully表示成功。

3、啓動實例

 

上一步咱們已經制做好了鏡像,如今咱們把鏡像放到Docker裏,讓它跑起來。

執行Docker 命令:docker run -d --rm -p 5000:80 --name <實例名稱>  <鏡像名稱>

-d會在啓動成功後輸出鏡像的惟一標識碼, --rm 會判斷若是存在同名實例會刪除替換  -p指定程序運行端口   宿主端口:容器端口    注:由於上文中沒有指定EXPOSE因此容器的端口是80  --name 參數後的實例名和鏡像名不須要帶<>

以下圖,我把服務器的5003端口指定到了容器的80端口,如今訪問5003就會訪問到DEMO程序

docker ps  查看全部已經部署的實例

 

上面的這個命令所部署的實例會在容器重啓或者服務器重啓後自動卸載,也就是說一旦重啓Docker服務或者鏡像以後就這個實例就不存在了,須要從新Docker run,以下圖,重啓服務後剛纔部署的實例沒有了

 

重啓後自動部署使用這條命令:docker run -d  --restart=always -p 5000:80 --name <實例名>  <鏡像名>   注:--restart 和 --rm 衝突,只能選擇一個

以下圖,使用--restart=always參數後重啓將不影響實例

 

 4、進入鏡像進行文件的查看更改

執行命令 docker ps 查看現有實例,而後執行命令  docker exec -it <CONTAINER ID>  /bin/bash

以下圖,這樣咱們就進入了鏡像裏面,這個web就是在Dockerfile裏定義的那個WORKDIR參數

在鏡像裏若是想使用vim看日誌或者改配置的話,須要本身安裝,由於鏡像裏是沒有vim的能夠考慮使用cat.

若是要安裝的話執行如下命令:apt-get update   執行完以後執行 apt-get install vim

 

 安裝完成後就可使用vim了

 5、中止、刪除實例和鏡像

中止命令:docker stop  實例ID

如圖,咱們中止了剛纔啓動的實例

刪除已經生成的鏡像命令 

docker images  查看全部的鏡像

docker rmi  鏡像ID   刪除指定鏡像

刪除前須要中止鏡像,不然會刪除失敗,以下圖,首先要中止鏡像,而後刪除鏡像,否則會報錯

至此,.NET Core在Docker中部署完畢,下一篇介紹使用Nginx進行反向代理。

相關文章
相關標籤/搜索