ASP.NET Core开发-Docker部署运行
ASP.NET Core開發(fā)Docker部署,.NET Core支持Docker 部署運(yùn)行。我們將ASP.NET Core 部署在Docker 上運(yùn)行。
大家可能都見識(shí)過Docker ,今天我們就詳細(xì)了解一下Docker的用途,以及真實(shí)的應(yīng)用場(chǎng)景。
Docker源于PaaS,PaaS的應(yīng)用場(chǎng)景即是Docker的應(yīng)用場(chǎng)景。
Platform as a Service: 平臺(tái)即服務(wù), 是面向軟件開發(fā)者的服務(wù), 云計(jì)算平臺(tái)提供硬件, OS, 編程語言, 開發(fā)庫(kù), 部署工具, 幫助軟件開發(fā)者更快的開發(fā)軟件服務(wù). 比如Google的GAE.
八個(gè)Docker的真實(shí)應(yīng)用場(chǎng)景?http://dockone.io/article/126
Docker 最大優(yōu)勢(shì):
靜態(tài)打包:把應(yīng)用程序及其運(yùn)行時(shí)打包為一個(gè)鏡像;
動(dòng)態(tài)運(yùn)行:以一個(gè)應(yīng)用容器的形式運(yùn)行這個(gè)應(yīng)用。
我們無需再關(guān)心每個(gè)系統(tǒng)要安裝什么環(huán)境,直接將鏡像復(fù)制到系統(tǒng)中運(yùn)行。
一次打包,直接運(yùn)行。
參考Docker 的 logo ,我們可以將Docker 理解為鯨魚上的集裝箱,而鯨魚就是操作系統(tǒng)。
Docker 是一個(gè)集裝箱,將所有的環(huán)境打包好在一起,我們只需要考慮挪動(dòng)集裝箱。
?
下面我們就來正式開.NET Core 的Docker 之旅。
?
Docker 命令:
docker 命令相關(guān)了解。
docker images //鏡像列表docker ps -a //所有運(yùn)行過的容器docker ps -l //最后運(yùn)行容器
docker export 容器id > 文件 //持久化容器
docker import 文件 //導(dǎo)入容器cat export.tar | docker import - linezero/demo-export:latest docker save 鏡像id > 文件 //持久化鏡像
docker load < 文件docker rm 容器id //刪除容器
docker rmi 鏡像id/鏡像名稱 //刪除鏡像
docker run 鏡像 //運(yùn)行
提示:可以使用 docker rm $(docker ps -q -a) 一次性刪除所有的容器,docker rmi $(docker images -q) 一次性刪除所有的鏡像。
?
ASP.NET Core 運(yùn)行于Docker
本文環(huán)境 :Ubuntu 14.04 ?Docker for Linux 1.11.2
?
首先我們創(chuàng)建一個(gè)ASP.NET Core 應(yīng)用。
dotnet new -t web
然后在Program.cs?添加?UseUrls("http://*:5000")
還原?dotnet restore
發(fā)布?dotnet publish
我們?cè)?publish 文件夾添加 Dockerfile文件
FROM microsoft/dotnet:latestCOPY . /appWORKDIR /appEXPOSE 5000/tcpENTRYPOINT ["dotnet", "aspnetcore.dll"]最終?publish?目錄如下:
將publish 文件夾復(fù)制到Ubuntu系統(tǒng)
運(yùn)行構(gòu)建命令,構(gòu)建Docker 鏡像。?
docker build -t linezero/demo .
后面的點(diǎn)是需要的。
然后運(yùn)行容器
docker run -it -p 8080:5000 linezero/demo
?
容器跟鏡像的關(guān)系,一個(gè)鏡像可以創(chuàng)建多個(gè)容器。
如上面的,我可以再創(chuàng)建一個(gè)?docker run -d -p 8090:5000 linezero/demo?
-d 參數(shù)也就是后臺(tái)運(yùn)行,然后通過docker ps 可以看到容器運(yùn)行的狀態(tài),通過docker stop 容器id 停止。
?
Dockerfile ?Docker 容器配置文件
源碼模板
FROM microsoft/dotnet:latestCOPY . /appWORKDIR /appRUN ["dotnet", "restore"]RUN ["dotnet", "build"]EXPOSE 5000/tcpENTRYPOINT ["dotnet", "run"]?
發(fā)布后模板
FROM microsoft/dotnet:latestCOPY . /appWORKDIR /appEXPOSE 5000/tcpENTRYPOINT ["dotnet", "xx.dll"]以上模板都依賴于 ?microsoft/dotnet 鏡像,單獨(dú)安裝的命令為
docker pull?microsoft/dotnet
也可以先不安裝,build 的時(shí)候會(huì)為我們安裝。國(guó)內(nèi)速度可能有些慢,請(qǐng)耐心等待。
有了Docker dotnet 鏡像,你無需折騰dotnet sdk 安裝,鏡像自帶。
?
我們?nèi)绻雽ocker 放置到其他機(jī)器運(yùn)行,很簡(jiǎn)單。
直接保存鏡像,然后復(fù)制鏡像到其他機(jī)器,然后使用docker 命令load 既可。
docker save linezero/demo?> demo.tar
然后加載命令
docker load < demo.tar
然后就可以使用docker run 運(yùn)行程序了,無需關(guān)心程序需要哪些依賴。
原文地址:http://www.cnblogs.com/linezero/p/docker.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的ASP.NET Core开发-Docker部署运行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软BUG Bounty悬赏项目扩展至.
- 下一篇: 大咖开讲:一小时学会.NET MVC开发