天天看點

Docker打包 Asp.Net Core應用,在CentOS上運作

本文主要介紹下運用docker虛拟技術打包Asp.net core應用。 Docker作為一個開源的應用容器引擎,近幾年得到廣泛的應用,使用Docker我們可以輕松實作應用的持續內建部署,一次打包,到處運作。

Docker打包 Asp.Net Core應用,在CentOS上運作

開篇借用百科上對docker的介紹。

友善大家學習:

http://www.docker.org.cn/(中文站) 

https://www.docker.com/(英文站)

docker鏡像站:https://hub.docker.com/

【搭建環境】

系統:CentOS 7.0    容器:Docker 1.12.6          .Net Core版本: .NET Core 1.1

工具:putty、winScp

一、首先,我們先介紹下關于docker容器的安裝。

直接用黃狗安裝工具安裝docker。

 

安裝并成功啟動docker服務後,可以通過以下指令檢視docker版本資訊

  

docker用戶端、服務端版本資訊都展示出來了。

二、安裝Docker加速器。

 我目前使用的阿裡開發者提供的docker加速服務。

您可以通過修改daemon配置檔案<code>/etc/docker/daemon.json</code>來使用加速器:

為什麼要安裝Docker加速器?

摘自網友的話:衆所周知的原因,要想流暢地使用Docker,需要配置Docker加速器,否則你會覺得回到了撥号上網的時代 。

三、釋出Asp.Net Core程式。

 我這裡是建立了也給Asp.Net Core web程式。

Docker打包 Asp.Net Core應用,在CentOS上運作

紅色圈住部分,是後來手動添加進去的,dockerfile是你的應用部署到docker上所必須的配置資訊,隻是個不帶擴充名的純文字檔案而已。hosting.json需要是配置服務啟動時,監聽資訊。使用配置檔案,需要手動修改Program.cs中的入口程式。

完成以上操作後,我們釋出這個demo程式,解決方案,右鍵釋出。

Docker打包 Asp.Net Core應用,在CentOS上運作

釋出成功後,預設在bin/release/publishOutPut檔案夾下。

Docker打包 Asp.Net Core應用,在CentOS上運作

然後,我把publishOutPut重命名為publish後,通過WinScp工具把檔案傳到root/docker/下。

Docker打包 Asp.Net Core應用,在CentOS上運作

另外,我們在網站根目錄下,建立的Dockerfile檔案,排上用場了,我們編輯修改檔案。

 指定容器對外暴露端口80。注意,COPY .後面有空格,表示是目前位置,意思是從目前位置複制檔案到/publish目錄下。網上有篇部落格,少了個.,導緻copy requires at least one argument這樣的錯誤。

四、打包鏡像

首先,我們進入/docker/publish目錄

Docker打包 Asp.Net Core應用,在CentOS上運作

執行以下指令:

意思是生成一個名為demo-netcore的鏡像。(注意:最後空格後面有一個.)。

這個指令會,根據目前目錄下dockerfile配置檔案,進行打包。

打包成功。

接下來,看看我們打包好的鏡像。

因為,剛打包的鏡像demo-netcore是基于docker.io/microsoft/aspnetcore鏡像的,是以在打包demo-netcore的過程中,會優先從鏡像庫中拉取docker.io/microsoft/aspnetcore鏡像。至此,我們的第一個docker鏡像就打包成功了。接下來,在容器中運作鏡像。

五、運作docker容器

其中,demo是制定容器的名稱,-p是進行宿主和容器之間端口的映射,(-p 宿主端口:容器端口),

 執行完以上指令後,正常情況下,會出現如下内容:

  這表明,你的asp.net core程式已經成功在docker容器中運作,監聽端口為80。這個80指的是容器的端口,以上資訊都是在容器中執行的結果輸出。它會提示,按Ctrl+C終止目前應用程式。如果在執行docker run的時候,加上 -d指令,這樣容器就會一直運作,即使關掉終端視窗。于是,我們想讓docker程式一直運作,以上指令可以修改為:

  檢驗docker容器是否運作成功,執行如下指令:

以上資訊可以看到,容器ID,容器名稱,指令,鏡像名稱,

由于,我再dockerfier檔案中,配置宿主的端口為8080,那麼我們通路容器中的asp.net core程式時,需要通過8080端口通路,完成以上步驟,接下來讓我們看下結果吧!浏覽器打開http://localhost:8080或者執行

Docker打包 Asp.Net Core應用,在CentOS上運作

第一個asp.net core docker應用運作起來了!

以下,是在本次操作中,常用的幾個docker指令。

Docker打包 Asp.Net Core應用,在CentOS上運作

繼續閱讀