Docker在Linux上運行NetCore系列(一)配置運行DotNetCore控制檯 Docker在Linux/Windows上運行NetCore文章系列

轉發請註明此文章做者與路徑,請尊重原著,違者必究。html

 

 

系列文章:http://www.javashuo.com/article/p-zqmedlqz-bg.htmllinux

本篇文章操做系統信息

      Linux:ubuntu 16.04.3 amd64git

 

查看NetCore支持的Linux系統

      NetCore不是支持Linux的全部系統,只支持部分,因此在Linux上安裝NetCore以前要查看系統與版本是否支持NetCore。github

      查看NetCore2.0以上各個版本在Linux支持的系統及版本:docker

https://github.com/dotnet/core/blob/master/release-notes/2.0/2.0-supported-os.mdubuntu

https://github.com/dotnet/core/blob/master/release-notes/2.1/2.1-supported-os.mdsegmentfault

https://github.com/dotnet/core/blob/master/release-notes/2.2/2.2-supported-os.md架構

 

安裝Docker

      安裝docker,參考:http://www.javashuo.com/article/p-qdmptyqe-ba.htmlapp

 

開始使用Docker在Linux上運行NetCore

      回想一下咱們日常作開發。流程都是使用Windows操做系統,而且使用宇宙最好IDE-VS,來建立項目、發佈、運行。工具

      這篇文章,主要講述怎麼在linux上運用docker來運行net core程序 。也會使用咱們通常會使用到的流行方法去運行net nore,通常的步驟以下:

在Windows上建立項目->修改dockerfile文件->複製項目到Linux系統->運行dockerfile並建立鏡像->在docker容器中運行鏡像。

 

建立項目而且生成Dockerfile                  

      如今,使用VS2017建立一個控制檯項目,並添加Docker的支持,須要注意的是,添加Docker支持時須要選擇Linux環境。具體怎麼添加支持,請查看下面的截圖。

      右鍵項目->添加->容器業務流程協調程序支持->選擇【Docker Compose】->選擇【Linux】

圖一:

1

 

圖二:

clipboard

 

圖三:

clipboard

 

      建立完成後,能夠看到項目的架構多了文件Dockerfile,與docker-compose。

clipboard

 

      主要看Dockerfile,它是描述了整個項目從編譯到運行所依賴的環境,怎麼去運行此程序。至於docker-compose目錄,能夠刪除。其做用是在告訴VS所要運行docker的入口點,而且能夠定義多個不一樣容器中的依賴關係來運行。這裏不講述docker-compose。

 

修改Dockerfile文件                      

      修改下面的Dockerfile文件,修改了路徑,把項目文件夾去掉了。由於運行Dockerfile的時候,是在Dockerfile所在的文件夾內運行。具體每行表明什麼,後面會說明。

clipboard

 

      修改完成了Dockfile文件後,下一步就是要把代碼放到Linux鏡像中了。

 

在Linux使用Docker運行程序的方式                         

      如今想到有3種方式運行在Linux上。第一種能夠經過複製當前的項目源代碼到Linux中編譯而且運行。第二種是上傳本地代碼,而後在Linux使用git clone運行。第三種是在另一臺Linux成功構建鏡像後,上傳到線上倉儲,最後在目標Linux下載鏡像並在倉庫中運行。

      第一種與第二種相似,都是須要獲取代碼,只是獲取代碼方式不一樣而已。第三種是經過線上發佈再拉取的作法。

下面咱們主要討論第一種。第2、三種在另一篇文章使用使用到。

 

在Docker中運行Dockfile生成鏡像                          

      首先須要把代碼copy到linux中。這裏經過WinSCP工具複製項目文件到Linux系統中,例如Windows下有下面文件:

clipboard

 

      複製到Linux下,經過putty工具查看文件夾,已經複製成功了。

clipboard

 

      開始構造鏡像image:運行命令【sudo docker build -t consoleappdockerlinux2-cmd .

      命令中,【consoleappdockerlinux2-cmd】代碼鏡像名稱,能夠修改爲本身所須要的名稱。也能夠爲鏡像添加tag,修改【consoleappdockerlinux2-cmd】成【consoleappdockerlinux2-cmd:1.0】爲鏡像打上1.0的tag標籤。命令最後面的【.】號是必要的,是dockerfile在當前目錄運行docker的意思。詳細命令可查看:http://www.runoob.com/docker/docker-build-command.html

      須要說明的是【sudo】命令是用管理員身份運行,因此要輸入密碼。而後運行docker。

      由於按照配置docker的時候使用了鏡像加速,因此下載.net core鏡像很快。若是是國外鏡像,會timeout超時,因此建議都配上。

clipboard

clipboard

 

配置鏡像加速器                     

      關於鏡像加速,能夠按照阿里雲的教程,登陸帳號:https://cr.console.aliyun.com/cn-shenzhen/mirrors。每一個帳號的加速地址應該不同。下面內容截取阿里雲的教程:

運行鏡像並添加到容器中           

      使用【sudo docker images】查看是否存在咱們的鏡像 consoleappdockerlinux2-cmd

clipboard

 

      能夠看到已經安裝鏡像成功了,咱們如今開始運行咱們的鏡像吧:【sudo docker run 鏡像id

clipboard

      能夠看到咱們真的成功了!

 

關於容器的說明              

      衆所周知,Docker有三大概念:鏡像、容器、倉庫。鏡像是容器與倉庫的橋樑,它們都須要用到鏡像。上面咱們把鏡像添加到容器中運行,當使用【docker container ls】時,不會看到任何的容器,由於咱們的控制檯程序運行結束了。

      因此若是要看到全部的容器,不管是運行中仍是中止的,可以使用命令【sudo docker ps -a】。

 

詳細介紹Dockerfile各行表明的意思          

 

 

 

 

演示更新版本                             

      安裝完成程序以後,通常都須要更新版本。這裏再簡單地演示一次。

      在代碼中更新了程序,控制檯輸出改爲 「Hello World! 這是我第一次運行在Docker Linux中。 Version 2」。

      爲了演示更直觀,首先將鏡像 consoleappdockerlinux2-cmd打上tag,1.0版本。【sudo docker tag consoleappdockerlinux2-cmd consoleappdockerlinux2-cmd:1.0

clipboard

 

      將程序代碼複製到本來的路徑上,而後運行命令構建Docker鏡像【sudo docker build -t consoleappdockerlinux2-cmd:2.0 .】。這裏指明構建2.0的tag。

成功後,運行【sudo docker images】能夠查看到2.0版本的鏡像了。

clipboard

 

      使用【docker run 鏡像id】添加到容器中運行鏡像,下面看到運行成功了,而且Version 2也打印出來了。

clipboard

 

      在上面,有沒有發現問題。部署新代碼運行鏡像時須要指定鏡像id,即便用【docker run 鏡像id】的命令。並且每當從新編譯新版本程序,都會從新生成一個鏡像id,那麼就矛盾了,每次都須要找到新版本的鏡像id纔會把鏡像添加到容器中運行?

      有什麼解決辦法?不指定鏡像id是否能夠?

      因此docker run提供了運行 鏡像名稱+標籤的命令:【sudo docker run consoleappdockerlinux2-cmd:latest

clipboard

 

      因此你每次運行上面的命令,都是最新版本的代碼。

 

 

系列文章

Docker在Linux/Windows上運行NetCore文章系列

 

能夠關注本人的公衆號,多年經驗的原創文章共享給你們。

相關文章
相關標籤/搜索