讓.NetCore程序跑在任何有docker的地方

一.分別在Windows/Mac/Centos上安裝Docker

Windows上下載地址: https://docs.docker.com/docker-for-windows/install/(window上安裝的常見問題和解決方案請參考下方步驟六)
Centos上安裝Docker請參考我上篇文章連接: http://www.javashuo.com/article/p-xdxcuoyr-ea.html
 

二.打開vs 新建一個Web程序

這裏選擇啓動docker支持,主要是爲了可以自動生成dockerfile文件,若是忘記勾選了也不要緊,也能夠右鍵解決方案,點擊‘添加’,選擇‘docker支持’,vs也會自動爲咱們生成dockerfile,大概長這個樣子

對dockerfile文件解釋說明:

1.FROM
經過FROM指令來設置要製做的鏡像基於哪一個鏡像,FROM指令必須是整個Dockerfile的第一個指令,若是指定的鏡像不存在默認會自動從Docker Hub上進行拉取
2.WORKDIR
經過workdir指令用於設置Dockerfile中的RUN、CMD和ENTRYPOINT指令執行命令的工做目錄(默認爲/目錄),該指令在Dockerfile文件中能夠出現屢次,若是使用相對路徑則爲相對於WORKDIR上一次的值
3.COPY
經過COPY指令來從指定路徑拷貝一個文件或目錄到容器的指定路徑中
4.RUN
RUN指令會在一個新的容器中執行任何命令,而後把執行後的改變提交到當前鏡像,提交後的鏡像會被用於Dockerfile中定義的下一步操做,RUN中定義的命令會按順序執行並提交,這正是Docker廉價的提交和能夠基於鏡像的任何一個歷史點建立容器的好處,就像版本控制工具同樣
5.EXPOSE
經過EXPOSE指令用來告訴Docker這個容器在運行時會監聽哪些端口
6.ENTRYPOINT
經過ENTRYPOINT指令咱們指定在容器啓動時要運行的應用程序
 
關於dockerfile的更多用法能夠參考: https://docs.docker.com/engine/reference/builder/
 

三.DotNet Core 程序在Windows Docker上的運行

直接在VS中選擇以docker方式運行,VS的輸出控制檯就會打印如下信息內容

能夠看到運行以前,VS先作了幾個檢查工做

  • windows上是否安裝了Docker Desktop
  • Docker Desktop是否在運行
  • Docker Desktop的操做系統模式是否與項目的目標操做系統匹配
  • 指定須要的鏡像本地是否存在,不存在的就會進行拉取
  • 檢查完了以後就是打包鏡像和運行容器

 

四.打包發佈鏡像到https://hub.docker.com/

選擇發佈到Docker hub,輸入本身的帳號密碼,沒有的話能夠註冊一個
 
點擊發布以後,輸出控制檯能夠看到有build打包的過程
 
發佈完成以後,控制檯會有對應的提示信息,已經成功推送帶標記的‘latest’的Docker鏡像
 
進入Docker hub上,在本身的帳戶的存儲庫下面會多處一個鏡像文件,也就是剛剛推送過去的
 
點擊進入,能夠看到拉取的命令
 
在powershell中拉取本身的鏡像
 
運行容器,運行成功會返回一個長的字符串,經過docker ps指令,能夠查看容器已經成功運行起來了
 
那麼這個鏡像是否能在linux上拉取並運行呢?答案是否認的,由於在添加docker支持時候,我這邊選了平臺支持爲windows,如圖
 
步驟四:只是玩一下怎麼打包推送鏡像文件,不關注的能夠直接跳過步驟四
 

五.DotNet Core 程序在Centos Docker上的運行

從新在VS中添加一個dockerfile,此次選擇linux平臺的
此次咱們須要修改下dockerfile文件
由於咱們提早編譯而且發佈出來了文件,因此在dockerfile中就不須要這些步驟了
貼一下dockerfile文件
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
COPY . /app
ENTRYPOINT ["dotnet", "WebApp_Docker.dll"]
 
發佈後將Release文件下全部文件上傳到centos上,而後執行如下命令打包鏡像
docker build -t docker_web_test:1.0 .
後面的點能夠打印出具體的執行步驟細節
 
經過指令驗證打包結果:# docker images
 
最後運行容器
docker run --name docker_web_test -d -p 7788:80 docker_web_test:1.0
能夠看到容器已經運行起來,而且能夠輸出頁面內容。
 

六.可能碰見的錯誤解決方案以及小提示:

1.在window上安裝docker時須要勾選上Hyper-V
 
2.若是在運行容器過程當中依然提示錯誤:「The virtual machine could not be started because a required feature is not installed」,那就須要檢查boss中的虛擬功能,拿個人華碩主板和inter處理器來示範,將Inter(VMX) Virtualization Tecjnology 的值設置爲 Enabled
 
 
而後保存設置退出便可
 
3.當咱們在windows上拉取鏡像碰到提示鏡像在當前操做系統不支持的時候,能夠在linux和Windows容器之間切換。如圖
 

相關文章
相關標籤/搜索