日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Docker打包 Asp.Net Core应用,在CentOS上运行

發布時間:2023/12/4 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker打包 Asp.Net Core应用,在CentOS上运行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

? ? Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的?Linux?機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

方便大家學習:

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 $ yum? install? docker $? #啟動docker服務 $ systemctl? start docker.service $? #配置開機啟動 $ systemctl?? enable? docker.service

 

安裝并成功啟動docker服務后,可以通過以下命令查看docker版本信息


docker version Client: ? Version:???????? 1.12.6 ? API version:???? 1.24 ? Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64 ? Go version:????? go1.7.4 ? Git commit:????? 88a4867 /1 .12.6 ? Built:?????????? Mon Jul? 3 16:02:02 2017 ? OS /Arch :???????? linux /amd64 Server: ? Version:???????? 1.12.6 ? API version:???? 1.24 ? Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64 ? Go version:????? go1.7.4 ? Git commit:????? 88a4867 /1 .12.6 ? Built:?????????? Mon Jul? 3 16:02:02 2017 ? OS /Arch :???????? linux /amd64

  

docker客戶端、服務端版本信息都展示出來了。

二、安裝Docker加速器。

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

有阿里云賬號直接登錄,https://dev.aliyun.com/search.html

如何使用Docker加速器

針對Docker客戶端版本大于1.10的用戶

您可以通過修改daemon配置文件/etc/docker/daemon.json來使用加速器:

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ ?"registry-mirrors": ["https://ihllojuv.mirror.aliyuncs.com"] } EOFsudo systemctl daemon-reloadsudo systemctl restart docker

為什么要安裝Docker加速器?

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

三、發布Asp.Net Core程序。

?我這里是新建了也給Asp.Net Core web程序。

紅色圈住部分,是后來手動添加進去的,dockerfile是你的應用部署到docker上所必須的配置信息,只是個不帶擴展名的純文本文件而已。hosting.json需要是配置服務啟動時,監聽信息。使用配置文件,需要手動修改Program.cs中的入口程序。


/// <summary>/// /// </summary>/// <param name="args"></param>public static void Main(string[] args){ ? ? ? ? ? ?//實例化一個配置生成器var config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("hosting.json", optional: true)//添加配置文件hosting.json ? ? ? ? ?.Build(); ? ? ? ? ? ?var host = new WebHostBuilder().UseKestrel().UseConfiguration(config)//使用配置信息 ? ? ? ? ? ? ? ?.UseContentRoot(Directory.GetCurrentDirectory()).UseIISIntegration().UseStartup<Startup>().UseApplicationInsights().Build();host.Run();}


完成以上操作后,我們發布這個demo程序,解決方案,右鍵發布。

發布成功后,默認在bin/release/publishOutPut文件夾下。

然后,我把publishOutPut重命名為publish后,通過WinScp工具把文件傳到root/docker/下。

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


FROM microsoft /aspnetcore :1.1 COPY .? /publish WORKDIR? /publish??? EXPOSE 80 CMD [ "dotnet" ,? "demo.dll" ]

 指定容器對外暴露端口80。注意,COPY .后面有空格,表示是當前位置,意思是從當前位置復制文件到/publish目錄下。網上有篇博客,少了個.,導致copy requires at least one argument這樣的錯誤。

?

四、打包鏡像

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

執行以下命令:


docker build -t demo-netcore .

  

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

這個命令會,根據當前目錄下dockerfile配置文件,進行打包。


[root@localhost publish] # docker build -t demo-netcore . Sending build context to Docker daemon 17.84 MB Step 1 : FROM microsoft /aspnetcore :1.1 ? ---> 983c2fe9cbef Step 2 : COPY .? /publish ? ---> ae9533f162da Removing intermediate container d8bdd1cb7061 Step 3 : WORKDIR? /publish ? ---> Running? in? 06a5fbef40ea ? ---> c63de53ebe20 Removing intermediate container 06a5fbef40ea Step 4 : EXPOSE 80 ? ---> Running? in? 8d0eaa657905 ? ---> 228e30d1bf74 Removing intermediate container 8d0eaa657905 Step 5 : EXPOSE 8080 ? ---> Running? in? a38fd6c59d4a ? ---> ab126ceac6ae Removing intermediate container a38fd6c59d4a Step 6 : CMD dotnet demo.dll ? ---> Running? in? 7dc71cdf0f87 ? ---> 96ef55dd9fc9 Removing intermediate container 7dc71cdf0f87 Successfully built 96ef55dd9fc9

打包成功。

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


[root@localhost publish] # docker images REPOSITORY?????????????????????? TAG???????????????? IMAGE ID??????????? CREATED????????????? SIZE demo-netcore???????????????????? latest????????????? 96ef55dd9fc9??????? About a minute ago?? 322.8 MB docker.io /microsoft/aspnetcore??? 1.1???????????????? 983c2fe9cbef??????? 23 hours ago???????? 305.1 MB [root@localhost publish] #

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

五、運行docker容器


docker run --name demo? -p 8080:80 demo-netcore:late

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

?執行完以上命令后,正常情況下,會出現如下內容:


Hosting environment: Production Content root path:? /publish Now listening on: http: // +:80 Application started. Press Ctrl+C to shut down.

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


docker run --name demo -d -p 808

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


[root@localhost ~] # docker ps CONTAINER ID??????? IMAGE???????????????? COMMAND???????????? CREATED????????????????????????????????????????????????????? STATUS????????????? PORTS??????????????????????????? NAMES 1abf4952db5b??????? demo-netcore:latest??? "dotnet demo.dll"??? About a minute ago??

  

以上信息可以看到,容器ID,容器名稱,命令,鏡像名稱,

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


wget http: //localhost :8080

  

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

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

?


#生成鏡像 docker build -t demo-netcore . #運行容器 docker run --name demo? -p 8080:80 demo-netcore:latest #刪除所有容器進程 docker? rm? $(docker? ps? -a -q) #刪除一個鏡像 docker rmi 鏡像ID #查看所有鏡像 docker images

  關于怎樣把本地鏡像推送到hub.docker.com,請訪問我的另一篇博客《推送docker 鏡像到hub.docker.com》

原文地址:http://www.cnblogs.com/ibeisha/p/netcoreondocker.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

總結

以上是生活随笔為你收集整理的Docker打包 Asp.Net Core应用,在CentOS上运行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。