<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          windows 下部署 .netcore 到 docker

          共 3856字,需瀏覽 8分鐘

           ·

          2020-10-13 02:40

          前面我們演示了如何將 Asp.Net Core 程序部署到 iis 和?部署到 windows 服務(wù)。其實(shí)前面的都是鋪墊,如何將 Asp.Net Core 站點(diǎn)部署到 docker 才是這個(gè)系列文章的重點(diǎn)。畢竟 .net core 它是跨平臺(tái)的,能跑在 Linux 下才能體現(xiàn)它的跨平臺(tái)性。

          ?

            一、一分鐘了解 Docker    

            Docker 是一個(gè)開源的應(yīng)用容器引擎,基于 Go 語(yǔ)言?并遵從Apache2.0協(xié)議開源。Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

          簡(jiǎn)而言之>?容器是一個(gè)打包了應(yīng)用服務(wù)的環(huán)境,它是一個(gè)輕量級(jí)的虛擬機(jī),每一個(gè)容器由一組特定的應(yīng)用和必要的依賴庫(kù)組成。

            Docker和傳統(tǒng)虛擬化之間最大的區(qū)別在于:容器是在操作系統(tǒng)層面上實(shí)現(xiàn)虛擬化,即直接復(fù)用本地主機(jī)的操作系統(tǒng);而傳統(tǒng)虛擬化則是在硬件層面實(shí)現(xiàn),如VMware vShpere, Xen及Citrix等。

            

            

          ?

            Docker 使用客戶端-服務(wù)器 (C/S) 架構(gòu)模式,使用遠(yuǎn)程API來(lái)管理和創(chuàng)建Docker容器。

            Docker 容器通過 Docker 鏡像來(lái)創(chuàng)建。

            容器與鏡像的關(guān)系類似于面向?qū)ο缶幊讨械膶?duì)象與類?! ?/p>

            Docker的架構(gòu)如下圖所示,Client 通過接口與Server進(jìn)程通信實(shí)現(xiàn)容器的構(gòu)建,運(yùn)行和發(fā)布。Client和Server可以運(yùn)行在同一臺(tái)集群,也可以通過跨主機(jī)實(shí)現(xiàn)遠(yuǎn)程通信。

            具體詳細(xì)內(nèi)容,請(qǐng)瀏覽:《幾張圖幫你理解Docker基本原理及快速入門》

          ?

            二、安裝 Docker

            windows 10?下安裝 Docker Desktop for Windows,windows 10?之前的版本安裝 Docker Toolbox。由于我當(dāng)前演示的環(huán)境是 windows 8.1,所以下載 Docker Toolbox。

          Docker Desktop for Windows is available for free.

          Requires Microsoft Windows 10 Professional or Enterprise 64-bit. For previous versions get?Docker Toolbox.

          By downloading this, you agree to the terms of the?Docker Software End User License Agreement?and the?Docker Data Processing Agreement (DPA).

            安裝 Docker Toolbox ?之前,必須確定開啟了硬件虛擬化。windows 8.1如果沒有開啟,需要去 BIOS 設(shè)置開啟虛擬化技術(shù)。windows 10?網(wǎng)上的介紹是去?控制面板 \ 所有控制面板項(xiàng) \ 程序和功能 \?啟用或關(guān)閉 windows 功能 里勾上 Hyper-v,不過我沒試過。?

          ?  之后安裝過程保持默認(rèn)設(shè)置,但在 Setup-Docker Toolbox 界面下 Select Additional Tasks 中一定記得勾選最后一項(xiàng)(Install VirtualBox with NDIS5 driver[default NDIS6])。

          ?

          ?  安裝完成后桌面會(huì)生成三個(gè)快捷方式,分別為:

          1. Docker Quickstart Terminal: 提供Docker的命令行操作

          2. Oracle VM VirtualBox: 虛擬機(jī)軟件。

          3. Kitematic (Alpha):圖形化的docker工具

          ?  在使用Docker前,要先創(chuàng)建docker machine,它其實(shí)是臺(tái)輕量級(jí) linux 內(nèi)核虛擬機(jī),不過在使用它的時(shí)候,你可能根本察覺不出來(lái)它是虛擬的。直接雙擊打開 Docker Quickstart Terminal,它就會(huì)自動(dòng)安裝好 docker machine,前提是你要有梯子,不然會(huì)卡死在安裝 boot2docker.iso 這一步。沒梯子的可以參考這里?。

          ?

            三、部署程序

            3.1? 添加?Docker?支持

            打開上一篇的項(xiàng)目,右鍵添加 Docker 支持。

            3.2? 編輯 Dockerfile?腳本

            刪掉自動(dòng)生成的 DockerFile 腳本,使用以下腳本:  ?

          1

          2

          3

          4

          5

          6

          7

          8

          9

          10

          11

          12

          13

          14

          15

          16

          17

          18

          19

          20

          #引入鏡像,低版本 docker 去掉??AS?base

          #換成阿里鏡像

          #FROM?registry.cn-chengdu.aliyuncs.com/jimlicatpub/aspnet:3.1-buster-slim?AS?base

          FROM?mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim?AS?base

          ?

          #配置工作目錄

          WORKDIR /app

          ??

          #暴露容器端口,此端口與程序運(yùn)行路徑一致,可

          EXPOSE 80

          ??

          #復(fù)制文件到工作目錄

          COPY . .

          ?

          #ENV :配置系統(tǒng)環(huán)境變量,比如程序環(huán)境環(huán)境等在這里配置(開發(fā)、預(yù)發(fā)、線上環(huán)境)

          #這里是配置程序運(yùn)行端口 如果程序不使用默認(rèn)的80端口這里一定要設(shè)置(程序運(yùn)行端口)

          ENV ASPNETCORE_URLS http://+:80

          ?

          #啟動(dòng)程序

          ENTRYPOINT ["dotnet",?"Riz.Web.dll"]

            同時(shí)修改 DockerFile?輸出屬性

            3.3?發(fā)布程序

          ?  3.4?生成鏡像文件

            轉(zhuǎn)到發(fā)布后的目錄,shift +?右鍵 -?在此處打開命令?打開命令行,使用以下命令生成鏡像。注意后面的 . 不能去掉。

          1

          2

          3

          4

          #docker build -t imagename:version .

          #版本號(hào)可以不寫,表示沒有版本號(hào)(last)

          #指令后面有一個(gè)"."?不能漏,代表當(dāng)目前目錄的意思
          #riz.web 是鏡像的名稱,可以根據(jù)自己需要修改

          docker build -t riz.web .

            完成后可查看生成的鏡像。這里如果沒有翻墻,在拉取 .net core 鏡像時(shí)可能會(huì)卡住。解決方案是使用 docker-mcr 加速鏡像,跟著它的說(shuō)明步驟手動(dòng)拉取鏡像,再運(yùn)行 docker build 命令Ok。

            3.5?運(yùn)行鏡像

          1

          2

          3

          4

          5

          6

          7

          8

          #https://www.runoob.com/docker/docker-run-command.html

          #docker run -d -p 2000:80?--name containername imagename:version

          #-d 意思是后臺(tái)運(yùn)行

          #-p: 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口。例如配置2000:80就是外網(wǎng)的2000端口映射到docker的80端口

          #-name?為容器指定一個(gè)名稱

          #imagename:version 鏡像:版本

          #注意事項(xiàng):如果你的服務(wù)器是阿里、騰訊、華為云等,配置的端口一定要在安全組配置里打開,比如下面的2000端口,不然訪問不了

          docker run -d -p 2000:80?--name riz.web riz.web

            如果運(yùn)行后出現(xiàn)一串ID,則表示運(yùn)行正常,80為docker容器的端口,映射到本機(jī)的端口號(hào)位2000。按照?qǐng)@子里的一些介紹文章,容器運(yùn)行起來(lái)就萬(wàn)事大吉了,瀏覽器里輸入 http://localhost:2000/?就能看到運(yùn)行效果??傻轿疫@怎么倒騰不行,直接顯示?localhost?拒絕了我們的連接請(qǐng)求。難道是因?yàn)槲业沫h(huán)境是 win8.1,只有 win 10?的 Hyper-v 才能做得到?如果有朋友在 win10?下直接輸入 localhost:port 能運(yùn)行成功,麻煩留言告知,不勝感謝。后來(lái)仔細(xì)想想,localhost 表示的是本地主機(jī)(宿主主機(jī)),那么站點(diǎn)的 host 應(yīng)該是 docker 所在虛擬機(jī)的 ip 才對(duì)。docker-machine ip default,看到 docker 的 ip 是 192.168.99.100,瀏覽器里輸入 http://192.168.99.100:2000/,運(yùn)行效果馬上出來(lái)~~

          ?

            

            參考資料:

            1.?官方文檔, 《Host ASP.NET Core in Docker containers》

            2. Edison Zhou,《?.NET Core微服務(wù)之ASP.NET Core on Docker》

            3.?SzeCheng,《幾張圖幫你理解Docker基本原理及快速入門》

            4.?優(yōu)雅轉(zhuǎn)身,《Windows下部署安裝Docker》

            

            示例代碼托管:https://gitee.com/TANZAME/Demo/tree/master/07.Core/Riz.Web

            技術(shù)交流 QQ 群:816425449


          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码免费娞在线观看 | 中文字幕手机在线视频 | 超碰自拍中文字幕 | 亚洲日韩小电影 | 黑人大香蕉伊人 |