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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

Docker的使用初探(二):Docker与.NET Core的结合

發布時間:2025/7/14 asp.net 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker的使用初探(二):Docker与.NET Core的结合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • Docker的使用初探(二):Docker與.NET Core的結合
    • 添加Dockefile
      • 1. 在創建項目時添加
      • 2. 手動添加
      • 3. 容器業務流程協調控制程序支持
    • Dockefile語法
    • Docker項目調試
      • 僅添加文件的方式
      • 容器業務流程協調控制程序支持

Docker的使用初探(二):Docker與.NET Core的結合

在二者的結合上,微軟官方給予了很大的支持,從官方發布的一些文章和VS 2017在建立.NET Core項目時自帶的Docker選項都可以看出來,這也與Core的跨平臺特性有很大的關系,而Docker正是可以選擇以Linux或Windows環境部署

添加Dockefile

上一篇文章介紹了如何拉取Core的官方鏡像,但是我們終究要將Docker應用到我們的開發環境中,如何將我們自己的項目生成為鏡像并部署到Docker上呢?第一步就添加Dockerfile這個文件,在VS2017中大致是三種方法,它們稍有區別,但最終也都是建立了一個Dockerfile文件

1. 在創建項目時添加

在新建Core項目時,勾選“啟用Docker支持”選項,新建的項目會自動添加dockerfile文件,文件的具體內容在下文進行分析

2. 手動添加

已經在使用的項目可以通過“右鍵-添加-Docker支持”,這樣也可以新建Dockerfile文件

3. 容器業務流程協調控制程序支持

這種方法相對于前兩種比較特殊,它不再是單單增加一個Dockerfile文件,而是如名稱一般是一整條生產鏈,用于配合持續集成工具的開發-調試-生成-發布一條龍服務。添加的方式與第二種相同,右鍵項目添加就能看到這個拗口的名字

使用這種方式除了生成Dockerfile文件還會在解決方案中添加一個名為Docker Compose的業務流程協調程序,在新建時可以選擇,但是默認自帶的只有這個。里面包含兩個文件,一個是 .dockerignore 這個和git類似,里面記錄的文件不會被打包成鏡像發布,另一個是 docker-compose.yml ,用于配置這個業務流程的信息,如鏡像名稱和Dockerfile文件的路徑等

Dockefile語法

大概是有以下這些,挑幾個用到的說一下

FROM MAINTAINER RUN CMD EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USER WORKDIR ONBUILD
  • FROM

FROM <image>

說明使用的鏡像,如果本地沒有會自動拉取對應名稱的鏡像,沒有指定標簽的情況默認就是latest

FORM指令是Dockerfile文件的第一行,但可以不唯一,根據需要可以有多個

以默認的Core項目為例,這里拉取的就是Core的官方鏡像,上篇文章也有用到,分別是運行時和SDK

  • WORKDIR

WORKDIR <工作目錄路徑>

顯而易見就是鏡像被安裝的路徑,如果路徑不存在,Docker會自動創建

  • COPY

COPY <源路徑> <目標路徑>

將文件和目錄復制到容器的文件系統。文件和目錄需位于相對于 Dockerfile 的路徑中。

  • RUN

RUN <Shell/exec>

在當前鏡像上要執行的命令,可以使用shell或者exec的格式

  • EXPOSE

EXPOSE <端口>

服務端容器對外映射的本地端口

  • ENTRYPOINT

使用格式 RUN 一樣,但是這個命令是在容器啟動后執行的命令,不會被 RUN 命令覆蓋,一個Dockerfile里面只能有一個,如果有多個則只執行最后一條

其余的指令還沒怎么用到,用法還不太清楚

Docker項目調試

我們在前面提到了三種創建Dockerfile文件的方法,實際上是兩種情況,針對這兩種情況,打包鏡像的方法也不同

僅添加文件的方式

使用 docker build -t <name> <path> 指令。這種情況更加泛用,無論是不是用VS創建的都可以使用這種指令打包鏡像

進入Dockerfile文件所在的路徑后執行命令即可

為了演示,我先刪除的core的官方sdk,由于在Dockerfile里面我們寫入了使用了 FROM 命令,所以執行命令后我們發現Docker自動下載了鏡像,并且打包了我們的項目,但是最后有一句 image operating system "windows" cannot be used on this platform ,因為我這邊Docker使用的是Linux模式,這里我們構建的是Windows的容器鏡像,所以需要切換一下,系統右下角托盤圖標右鍵“switch to ...”,

為了體現Dockerfile指令的效果,我們刪除之前創建的鏡像再執行一次Build指令,這次Docker沒有下載Core的sdk,因為之前已經下載過了。不過我在這里遇到了網絡問題,發現之前的鏡像拉取也失敗了,所以換了一個鏡像加速地址,然后簡化了一下dockerfile文件,然后重復上面的操作就行了

FROM microsoft/dotnet:2.1-aspnetcore-runtime WORKDIR /app COPY . . EXPOSE 80 ENTRYPOINT ["dotnet", "CoreDockerDemo1.dll"]

可以看到dockerfile里面的指令被依次執行,完成之后我們使用 docker image ls 就可以看到我們構建的鏡像了,之后用上面的方法可以創建Docker即可

容器業務流程協調控制程序支持

使用這種方式就不需要自己手動構建了,只要在VS里的調試按鈕點一下即可。由于我們前面添加過這套協調控制程序,所以現在這個項目里可以直接選擇docker進行調試

在這之前要對 docker-compose.yml 文件進行配置,基本上與dockerfile類似,而且更加直觀,對應輸入名稱等就好了

我在第一次生成時出現了“未啟用卷共享”的錯誤,這里我們需要在Docker的設置中的Shared Drives標簽中把程序生成構建的磁盤選中,然后點擊“Apply”按鈕應用設置,然后docker會自動重啟

設置完成后再點擊VS中的運行,web應用就會自動編譯生成并創建鏡像和容器,然后啟動網站。第一次啟動時可能會詢問是否授權SSL證書,進行授權即可


基本上有了這些,就可以利用Docker給開發工作帶來一些便捷,如果后面還要繼續深入的話,就是將Docker與持續集成結合起來應用到網站服務器環境上

轉載于:https://www.cnblogs.com/LFeather/p/10264619.html

總結

以上是生活随笔為你收集整理的Docker的使用初探(二):Docker与.NET Core的结合的全部內容,希望文章能夠幫你解決所遇到的問題。

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