1. 程式人生 > >Docker容器中開始 NETCore之路

Docker容器中開始 NETCore之路

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                                                                                                                       

一、引言

  開始寫這篇部落格前,已經嘗試練習過好多次Docker環境安裝,.Net Core環境安裝了,在這裡替騰訊雲做一個推廣,假如我們想學習、練手.net core 或是Docker卻苦於沒有開發環境,伺服器也不想買,那麼我們可以使用騰訊雲提供的開發者實驗,每個實驗專案每天可以免費使用一次,時常45分鐘,學習技術單靠看幾篇文章、幾本書是完全不夠的,”實踐方能出真知“。來騰訊雲開發者實驗室 學習.NET Core 2.0

二、環境介紹

  在練習平臺上的環境是CentOS7.3版 或許你會說我不懂Linux怎麼辦,沒關係,我也是小白,學點基本命令暫時能用起來就行了。畢竟我們不是專門在Linux下搞開發的。(Linux下專業人士見諒哈)。

  Docker容器,如果說Docker容器還不知道什麼概念的話,我推薦先暫停,先學習下Docker的基本概念,弄清楚Docker是什麼,總比越看越糊塗好.

  dotnet映象(也可以是aspnetcore映象這兩者的關係我將稍後解釋).

  OK,開始動手!

 

三、啟動實驗,安裝Docker

  640?wx_fmt=png&wxfrom=5&wx_lazy=1

  我進入的搭建Docker環境,當然也可以從其他實驗中開始著手。從搭建Docker環境中進入我們可以看到要求的步驟,方便我們快速安裝,僅此而已。 

  1、先來安裝Docker環境

  yum install docker-io -y //
CentOS已經將Docker軟體包放在了Extras軟體源中,直接利用即可  docker -v //檢視docker的版本 version  systemctl start docker.service //開啟Docker服務  systemctl enable docker.service //開機啟動Docker服務

  0?wx_fmt=png

  0?wx_fmt=png

  安裝Docker環境時需要等待一到兩分鐘........安裝完畢!

  接下來我們需要將Docker服務進行啟動

  0?wx_fmt=png

  到這裡Docker環境的安裝就已經結束了。

 

   當然我們還需要配置Docker,開始配置DockerHub:

  echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker  systemctl daemon-reload //重新載入 systemd,掃描新的或有變動的單元  systemctl restart docker.service //重啟docker服務

 

 

四、安裝.NETCore環境

  接下來我們將有兩種方式來安裝我們的.net core環境

  方式一:在Docker容器中獲取dotnet映象

  docker pull microsoft/dotnet //安裝.net core映象

 

  0?wx_fmt=png

   這種方式提供給了我們.net core的整套模板,編譯工具,RunTime等等,一應俱全。

  我們可以通過docker命令檢視我們已經擁有的映象,注意 這需要在Linux主機下檢視,別跑到容器中去了

  docker images // 檢視當前已有的docker映象檔案

 

  0?wx_fmt=png

   當前命令下我們可以看到dotnet映象已經被我們拉取下來了。OK

  繼續,我們開始新建並執行一個以dotnet映象的容器

  docker run -it microsoft/dotnet //啟動一個dotnet映象

 

   0?wx_fmt=png

  看到root後面變化了沒,這說明我們已經進入了一個容器,Docker當新建一個容器後,會給這個容器分配一個id,也就是我們所看見的那串字串了。

   繼續,通過命令新建一個web應用

  dotnet new mvc -n MyFirstDocker.Web //建立專案名為MyFirstDocker.Web的ASP.NET Core MVC專案

  0?wx_fmt=png

  我們可以通過ls命令看到當前容器中的所有資料夾資訊,MyFirstDocker.Web專案已經建立好了

  0?wx_fmt=png

  在MyFirstDocker資料夾內,有很多我們熟悉的東西

   0?wx_fmt=png

  接下來,通過命令啟動專案

  dotnet run //啟動專案

  0?wx_fmt=png

   OK,大功告成,專案啟動,由於實驗環境沒得瀏覽器,我們只能看看 哈哈 貌似是有一種方式可以看到頁面 但我還沒學會 見諒哈

 

   通過命令exit退出當前容器,檢視當前主機上已有的容器例項

  docker ps -a // 檢視當前的已存在的容器例項 (不考慮狀態)

  在這裡我們開始要考慮長遠計劃了,假如我需要將新的檔案加入進來,我可以採取什麼方式,在容器中安裝一個git,pull新檔案,或許可以,但是如果說這臺主機上有十個容器,都執行著服務,莫非我還得十個容器全部安裝git,基於這個考慮,可以嘗試用下這種操作了。

  我在Linux主機中安裝.NET Core SDK

  首先開始配置安裝包的來源

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

  sudo sh -c 'echo -e "[packages-microsoft-com-prod]

  name=packages-microsoft-com-prod 

  baseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod

  enabled=1

  gpgcheck=1

  gpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

 0?wx_fmt=png

  接下來開始安裝.net-sdk,版本2.0.3,這個過程耗時比較長,需要耐心等待

  sudo yum update  sudo yum -y install libunwind libicu  sudo yum install dotnet-sdk-2.1.3

   好了,開始接下來的操作了

  cd /home   mkdir aspnetcoreapp  cd aspnetcoreapp  dotnet new web  dotnet restore  dotnet run

   0?wx_fmt=png

  通過直接啟動,也是可以直接執行起來的,但是肯定是不推薦的啦,畢竟Docker這麼好用  哈哈

  0?wx_fmt=png

  接下來讓Linux主機上的檔案可以共享檔案到Docker容器中,這樣一來我們可以直接在Docker中使用Linux主機檔案,然後執行起來,當有檔案改動,只需要更新Linux主機上的檔案即可。這裡會遇到一個問題,就是明明已經用了共享目錄的命令,但是Docker容器中並沒有那些檔案,這是由於selinux的原因,我的解決方案就是在 -v加上一個--privileged=true,當然這個方案也是靠度娘得知的。

  當前Docker容器中已經有了共享目錄下的檔案,可能會需要dotnet restore然後可以用dotnet run進行啟動

   0?wx_fmt=png

 

  方式二:在Docker容器中獲取aspnetcore映象

  docker pull microsoft/aspnetcore //安裝asp.net core映象

 

  0?wx_fmt=png

  檢視當前已經有的映象,成功安裝了aspnetcore映象

  0?wx_fmt=png

  同樣和前面的操作一樣,我們根據該映象新建一個容器

  docker run -it microsoft/aspnetcore //執行一個以aspnetcore為映象的容器 

  同樣新建一個應用,但是會發現這個應用不能成功,提示我們沒有SDK

  dotnet new mvc -n HelloDocker.Web //建立專案名為HelloDocker.Web的ASP.NET Core MVC專案

  0?wx_fmt=png

   

  在這裡我要解釋下dotnet映象aspnetcore映象什麼關係:

   在dockerhub官網中有著dotnet和aspnetcore的映象,dotnet可以看作是集大成者,包含了.netcore控制檯aspnetcore的所有,而aspnetcore是以dotnet映象為基礎,在aspnetcore中只包含了RunTime和構建當前專案為映象的工具,這也就意味著如果我們要直接使用aspnetcore為映象,我們的專案是要已經編譯好了的,才可以直接使用這個映象。

  而當你使用dotnet映象時,包含了編譯工具,Runtime,一切的一切,這也激素dotnet映象比aspnetcore映象大這麼多的原因了。

  0?wx_fmt=png

   可以利用方式一最後在Linux下編譯好的專案,同樣用共享目錄的方式共享到有aspnetcore映象的Docker容器中,這樣我們就可以直接跑起來了。由於時間關係沒有嘗試,下次會嘗試一下。

  這樣做的好處是在開發環境中編譯好的專案我們可以直接拿來用,Docker容器中只需要執行時環境就可以了。

 

 五、DockerFile檔案的作用

  dockerFile可是好東西,好比如說拿著武功祕籍,一招一式照著做。

  一般是在專案中建好一個dockerfile檔案,然後在其中寫上我們的要求

FROM microsoft/dotnet:latest

  WORKDIR /app

  COPY . /app

  RUN dotnet restore

  EXPOSE 5000

  ENV ASPNETCORE_URLS http://*:5000

  ENTRYPOINT ["dotnet","run"]

通過命令將dockerfile檔案執行,將整個專案打包成映象,我們可以使用docker images可以看到這個生成的新映象

  docker build -t mydockerimage .

    如果我們需要使用這個映象,我們可以直接在建立容器時指定這個映象,生成之後的環境和你打包的映象是一樣的

   最後感謝博友的文章參考,半隻不解的時候正好看到這篇文章,很順利的解決了一個問題。

相關文章

原文地址:https://www.cnblogs.com/CKExp/p/8159269.html



   

.NET社群新聞,深度好文,歡迎訪問公眾號文章彙總 http://www.csharpkit.com

640?wx_fmt=jpeg


                             

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述