日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Docker系列之.NET Core入门(三)

發布時間:2023/12/4 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker系列之.NET Core入门(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Docker生態系統中除了上一節所講解的基本概念,還有其他專業術語,本文我們將一筆帶過,同時會開始陸續進入到在.NET Core中使用Docker。

專業術語

Docker Engine(Docker引擎):客戶端 - 服務器應用程序。Docker公司將Docker Engine分為兩個產品。Docker Community Edition(CE)基于開源工具且免費,我們學習時可以使用這款產品。Docker Enterprise附帶了其他功能支持,比如管理和安全等等功能。

Docker Client(Docker客戶端):我們與Docker進行交互的主要方式。使用Docker命令行界面(CLI)時,在終端中鍵入以docker開頭的命令,Docker Client會使用Docker API將命令發送到Docker守護進程中。

Docker Daemon(Docker守護進程):監聽Docker API請求的Docker服務器。Docker守護進程主要管理鏡像,容器,網絡和卷。

Docker Volumes(Docker卷):存儲創建應用程序和運行應用程序持久化數據的最佳方式。

Docker Registry:存儲Docker鏡像的遠程注冊位置。我們將鏡像推送到注冊表并從注冊表中提取圖像,我們可以托管自己的注冊表或使用供應商商的注冊表。

Docker Hub:Docker鏡像的最大注冊表。它也是Dcoker默認的注冊表位置, 我們可以在Docker Hub上找到免費的鏡像并存儲我們自己的圖像。

Docker Networking:允許我們將Docker容器連接在一起。連接的Docker容器可以位于同一主機或多個主機上。

Docker Compose:屬于一個工具,我們可以非常輕松地運行需要多個Docker容器的應用程序。Docker Compose允許我們將命令寫到docker-compose.yml文件中以供重用。Docker Compose命令行界面(cli)使我們可以更輕松地與多容器應用程序進行交互。Docker Compose免費安裝Docker。

Docker Swarm:容器部署編排的產品。Docker官方教程進行容器編排和部署使用的Docker Swarm。建議不要浪費時間在Docker Swarm上,推薦使用Kubernetes(k8s)。

Docker Services:分布式應用程序的不同部分。?服務實際上只是“生產中的容器”。服務只運行一個鏡像,但它編碼了鏡像的運行方式 - 它應該使用哪些端口,容器應該運行多少個副本,以便服務具有所需的容量等等。擴展服務會更改運行該軟件的容器實例的數量,從而為流程中的服務分配更多計算資源。Docker服務允許我們跨多個Docker守護進程擴展容器,并使Docker Swarms成為可能。

容器回顧

Docker鏡像在構建時被創建,而Dokcer容器在運行時被創建。

Dockerfile是Docker的核心,Dockerfile告訴Docker如何構建鏡像從而被用來制作容器,每個Docker鏡像都包含一個名為Dockerfile但沒有擴展名的文件。

當調用docker build以創建映像時,假定Dockerfile位于當前工作目錄中,可以使用文件標志(-f)指定到其他位置,容器是由一系列層所構建,而且每個鏡像層只讀,除了位于其他鏡像層之上的最終容器鏡像層。Dockerfile告訴Docker要添加哪些層以及添加它們的順序,每個鏡像層實際上只是一個包含自上一層以來的所更改的文件。

在linux中,幾乎所有東西都是文件。基礎鏡像提供初始層,基礎鏡像也稱為父鏡像,將鏡像從遠程存儲庫提取到本地時,僅僅只下載本地計算機上尚未存在的層, Docker通過重用現有層來節省空間和時間。

Dockerfile指令是一行開頭的大寫單詞,后緊跟其參數,Dockerfile中的每一行都可以包含一條指令。構建圖像時,將從上到下處理指令,如下:

只有FROM,RUN,COPY和ADD指令才能在最終鏡像中創建鏡像層,其他指令只是作為配置或說明,比如添加元數據或告訴Docker在運行時執行某些操作,例如公開端口或運行命令。在本文中,我們使用基于linux的Docker鏡像,當然我們也可以使用基于Windows的鏡像,建議使用linux。接下來我們來過濾下Dockerfile中各個指令說明。

Dockerfile指令

FROM - 指定基礎(父)鏡像。

LABEL - 提供元數據,包含維護者信息。

ENV - 設置持久化環境變量。

RUN - 運行命令并創建鏡像層,用于將包安裝到容器中。

COPY - 將文件和目錄復制到容器中。

ADD - 將文件和目錄復制到容器中。可以upack本地.tar文件。

CMD - 為執行容器提供命令和參數,可以覆蓋參數,只能有一個CMD。

WORKDIR - 設置后續說明的工作目錄。

ARG - 定義一個在構建時傳遞給Docker的變量。

ENTRYPOINT - 為正在執行的容器提供命令和參數。?

EXPOSE - 對外暴露端口。

VOLUME - 創建目錄用于訪問和存儲持久化數據。

.NET Core入門例子

接下來我們以.NET Core中使用Docker并輸出Hello World結束本文。

我們通過命令創建一個.NET Core控制臺程序,接下來為了在頁面上輸出Hello World,我們需要使用中間件,所以我們添加AspNetCore包,如下:

然后我們打開控制臺程序,添加中間件打印Hello World代碼:

程序已就緒完畢,接下來我們發布該控制臺程序,如下:

接下來將執行上述步驟生成的bin目錄(實際上只需拷貝發布后生成的publish目錄即可,為了省事,我直接拷貝了整個bin目錄)拷貝到ubuntu中


由于我對linux不熟悉,所以采用虛擬機加載桌面端ubuntu鏡像的方式,對于從未使用過linux的童鞋,推薦使用桌面端ubuntu,友好的GUI界面,方便我們初學知道各個文件夾是做什么的,一看便知,后續再使用服務端版的ubuntu就會得心應手啦。?

接下來我們進入HelloWorld文件目錄,創建Dockerfile文件從而來創建.NET Core鏡像。

然后我們來編寫Dockerfile文件構建鏡像,如下:

父鏡像為.NET Core 2.2版本和我們創建的程序版本一致,然后將我們的應用程序(即publish目錄)拷貝,最后指定程序運行的命令和參數。有了Dockerfile文件,那么我們就可以開始構建鏡像了,終端繼續運行如下命令(注意:鏡像標簽名稱必須全部為小寫,否則報錯):

鏡像已構建完畢,接下來則是創建并啟動容器運行程序,如下:

從上述我們可看到容器已正常啟動,且運行環境為生產環境,監聽端口為5050。桌面版ubuntu默認為我們安裝了火狐瀏覽器,此時我們打開瀏覽器將會輸出Hello World,如下:

本文我們介紹Docker中的一些術語,然后最后寫了一個在.NET Core中使用Docker的入門例子,非常簡單。若直接使用服務端版本的ubuntu我是一臉懵逼,有了界面,我也大概知道了一些文件夾里存放的是什么,一目了然,雖說這還只是冰山一角,每天積累一點,日積月累,厚積薄發嘛不是。?

總結

以上是生活随笔為你收集整理的Docker系列之.NET Core入门(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

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