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

来源:https://www.cnblogs.com/peyshine/archive/2020/05/19/12918315.html
-Advertisement-
Play Games

一.分別在Windows/Mac/Centos上安裝Docker Windows上下載地址:https://docs.docker.com/docker-for-windows/install/(window上安裝的常見問題和解決方案請參考下方步驟六) Mac上下載地址:https://hub.do ...


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

Windows上下載地址:https://docs.docker.com/docker-for-windows/install/(window上安裝的常見問題和解決方案請參考下方步驟六) Mac上下載地址:https://hub.docker.com/editions/community/docker-ce-desktop-mac Centos上安裝Docker請參考我上篇文章鏈接:https://www.cnblogs.com/peyshine/p/12915317.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”,那就需要檢查bios中的虛擬功能,拿我的華碩主板和inter處理器來示範,將Inter(VMX) Virtualization Tecjnology 的值設置為 Enabled     然後保存設置退出即可   3.當我們在windows上拉取鏡像碰到提示鏡像在當前操作系統不支持的時候,可以在linux和Windows容器之間切換。如圖  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 主要是使用了form組件 <html lang="cn"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <me ...
  • 受人所托,需要對他們的產品進行反爬測試,所以就有了以下內容,不過,我知道,針對這方面的文章太多了,是真的多,而且好早就有了,但是目前為止,很多app的防護基本也還是用的ssl pinning檢測證書。 因為,目前的app要嘛不用ssl,要嘛用就是一般的ssl,基本就是在手機上裝個相關軟體 的代理即... ...
  • 作者:超大隻烏龜 https://segmentfault.com/a/1190000022184751 總所周知 HashMap 是面試中經常問到的一個知識點,也是判斷一個候選人基礎是否扎實的標準之一,因為通過 "HashMap" 可以引出很多知識點,比如數據結構(數組、鏈表、紅黑樹)、 "equ ...
  • 看一下效果圖: InfulxDb 官方網站:https://portal.influxdata.com/downloads/ docker 安裝influxdb資料庫 chronograf可視化工具(非必要,只是可以web訪問,類似PHPMySQL) 啟動influxdb,其中 v參數表示將dock ...
  • 效果圖: 廢話 如何知道你寫的爬蟲有沒有正常運行,運行了多長時間,請求了多少個網頁,抓到了多少條數據呢?官方其實就提供了一個字典就包含一些抓取的相關信息:crawler.stats.get_stats(),crawler是scrapy中的一個組件。你可以在很多組件中訪問他,比如包含from_craw ...
  • MAUI Build 2020 大會上,微軟終於正式公佈 .NET 上的跨平臺框架,正式版將在 .NET 6 和大家見面。 MAUI 是日益流行的 Xamarin.Forms 的進化,Xamarin.Forms 已經有6年曆史了。 多年來,UPS,Ernst&Young 和 Delta 等公司一直在 ...
  • SunnyUI.Net, 基於 C# .Net WinForm 開源控制項庫、工具類庫、擴展類庫、多頁面開發框架 Blog: https://www.cnblogs.com/yhuse Gitee: https://gitee.com/yhuse/SunnyUI GitHub: https://git ...
  • SunnyUI.Net, 基於 C# .Net WinForm 開源控制項庫、工具類庫、擴展類庫、多頁面開發框架,2020-05-19創建目錄 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...