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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

netcore docker_让.NetCore程序跑在任何有docker的地方

發(fā)布時(shí)間:2024/7/5 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 netcore docker_让.NetCore程序跑在任何有docker的地方 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

Windows上下載地址:https://docs.docker.com/docker-for-windows/install/(window上安裝的常見問題和解決方案請(qǐng)參考下方步驟六)

Mac上下載地址:https://hub.docker.com/editions/community/docker-ce-desktop-mac

Centos上安裝Docker請(qǐng)參考我上篇文章鏈接:https://www.cnblogs.com/peyshine/p/12915317.html

二.打開vs 新建一個(gè)Web程序


這里選擇啟動(dòng)docker支持,主要是為了能夠自動(dòng)生成dockerfile文件,如果忘記勾選了也沒關(guān)系,也可以右鍵解決方案,點(diǎn)擊‘添加’,選擇‘docker支持’,vs也會(huì)自動(dòng)為我們生成dockerfile,大概長(zhǎng)這個(gè)樣子

對(duì)dockerfile文件解釋說明:1.FROM
通過FROM指令來設(shè)置要制作的鏡像基于哪個(gè)鏡像,FROM指令必須是整個(gè)Dockerfile的第一個(gè)指令,如果指定的鏡像不存在默認(rèn)會(huì)自動(dòng)從Docker Hub上進(jìn)行拉取2.WORKDIR
通過workdir指令用于設(shè)置Dockerfile中的RUN、CMD和ENTRYPOINT指令執(zhí)行命令的工作目錄(默認(rèn)為/目錄),該指令在Dockerfile文件中可以出現(xiàn)多次,如果使用相對(duì)路徑則為相對(duì)于WORKDIR上一次的值3.COPY
通過COPY指令來從指定路徑拷貝一個(gè)文件或目錄到容器的指定路徑中4.RUN
RUN指令會(huì)在一個(gè)新的容器中執(zhí)行任何命令,然后把執(zhí)行后的改變提交到當(dāng)前鏡像,提交后的鏡像會(huì)被用于Dockerfile中定義的下一步操作,RUN中定義的命令會(huì)按順序執(zhí)行并提交,這正是Docker廉價(jià)的提交和可以基于鏡像的任何一個(gè)歷史點(diǎn)創(chuàng)建容器的好處,就像版本控制工具一樣5.EXPOSE
通過EXPOSE指令用來告訴Docker這個(gè)容器在運(yùn)行時(shí)會(huì)監(jiān)聽哪些端口6.ENTRYPOINT
通過ENTRYPOINT指令我們指定在容器啟動(dòng)時(shí)要運(yùn)行的應(yīng)用程序
關(guān)于dockerfile的更多用法可以參考:https://docs.docker.com/engine/reference/builder/三.DotNet Core 程序在Windows Docker上的運(yùn)行


直接在VS中選擇以docker方式運(yùn)行,VS的輸出控制臺(tái)就會(huì)打印以下信息內(nèi)容

可以看到運(yùn)行之前,VS先做了幾個(gè)檢查工作

  • windows上是否安裝了Docker Desktop
  • Docker Desktop是否在運(yùn)行
  • Docker Desktop的操作系統(tǒng)模式是否與項(xiàng)目的目標(biāo)操作系統(tǒng)匹配
  • 指定需要的鏡像本地是否存在,不存在的就會(huì)進(jìn)行拉取
  • 檢查完了之后就是打包鏡像和運(yùn)行容器

四.打包發(fā)布鏡像到https://hub.docker.com/
選擇發(fā)布到Docker hub,輸入自己的賬號(hào)密碼,沒有的話可以注冊(cè)一個(gè)


點(diǎn)擊發(fā)布之后,輸出控制臺(tái)可以看到有build打包的過程


發(fā)布完成之后,控制臺(tái)會(huì)有對(duì)應(yīng)的提示信息,已經(jīng)成功推送帶標(biāo)記的‘latest’的Docker鏡像


進(jìn)入Docker hub上,在自己的賬戶的存儲(chǔ)庫下面會(huì)多處一個(gè)鏡像文件,也就是剛剛推送過去的


點(diǎn)擊進(jìn)入,可以看到拉取的命令


在powershell中拉取自己的鏡像


運(yùn)行容器,運(yùn)行成功會(huì)返回一個(gè)長(zhǎng)的字符串,通過docker ps指令,可以查看容器已經(jīng)成功運(yùn)行起來了


那么這個(gè)鏡像是否能在linux上拉取并運(yùn)行呢?答案是否定的,因?yàn)樵谔砑觗ocker支持時(shí)候,我這邊選了平臺(tái)支持為windows,如圖


步驟四:只是玩一下怎么打包推送鏡像文件,不關(guān)注的可以直接跳過步驟四五.DotNet Core 程序在Centos Docker上的運(yùn)行
重新在VS中添加一個(gè)dockerfile,這次選擇linux平臺(tái)的


這次我們需要修改下dockerfile文件
因?yàn)槲覀兲崆熬幾g并且發(fā)布出來了文件,所以在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"]

發(fā)布后將Release文件下所有文件上傳到centos上,然后執(zhí)行以下命令打包鏡像
docker build -t docker_web_test:1.0 .
后面的點(diǎn)可以打印出具體的執(zhí)行步驟細(xì)節(jié)


通過指令驗(yàn)證打包結(jié)果:# docker images


最后運(yùn)行容器
docker run --name docker_web_test -d -p 7788:80 docker_web_test:1.0


可以看到容器已經(jīng)運(yùn)行起來,并且可以輸出頁面內(nèi)容。六.可能遇見的錯(cuò)誤解決方案以及小提示:
1.在window上安裝docker時(shí)需要勾選上Hyper-V


2.如果在運(yùn)行容器過程中依然提示錯(cuò)誤:“The virtual machine could not be started because a required feature is not installed”,那就需要檢查bios中的虛擬功能,拿我的華碩主板和inter處理器來示范,將Inter(VMX) Virtualization Tecjnology 的值設(shè)置為 Enabled


然后保存設(shè)置退出即可
3.當(dāng)我們?cè)趙indows上拉取鏡像碰到提示鏡像在當(dāng)前操作系統(tǒng)不支持的時(shí)候,可以在linux和Windows容器之間切換。如圖

總結(jié)

以上是生活随笔為你收集整理的netcore docker_让.NetCore程序跑在任何有docker的地方的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。