淺析 Docker 鏡像與容器
Docker 允許開(kāi)發(fā)人員快速啟動(dòng)任何開(kāi)發(fā)環(huán)境,而無(wú)需在其本地計(jì)算機(jī)上安裝所有必需的軟件和工具。這是使用圖像和容器完成的,但這意味著什么?今天,我將解釋 docker 鏡像與容器之間的區(qū)別。
什么是 Docker 鏡像?
鏡像是包含創(chuàng)建容器所需信息的包。它包括在容器運(yùn)行時(shí)使用的所有依賴(lài)項(xiàng)和部署配置。圖像可以使用分層從多個(gè)基礎(chǔ)圖像繼承。我們將在本課程中深入討論這個(gè)主題,您將構(gòu)建基礎(chǔ)鏡像并使用構(gòu)建器模式和多階段構(gòu)建。層層疊疊形成容器的文件系統(tǒng)。圖像沒(méi)有狀態(tài),它永遠(yuǎn)不會(huì)改變。
如果您在本地開(kāi)發(fā)環(huán)境中工作,要開(kāi)始任何項(xiàng)目,您的第一步通常是安裝您正在處理的項(xiàng)目所需的一切,例如 SQL 服務(wù)器、IIS、搜索索引提供程序(如 Solr)等。此過(guò)程容易出錯(cuò)且乏味。
Docker 鏡像包含所有這些工具,這意味著當(dāng)您開(kāi)始一個(gè)新項(xiàng)目時(shí),團(tuán)隊(duì)中的開(kāi)發(fā)人員只需拉取 docker 鏡像!老實(shí)說(shuō),這是有史以來(lái)最好的事情。
什么是 Docker 容器?
另一方面,容器是圖像的運(yùn)行時(shí)實(shí)例。它具有圖像、執(zhí)行環(huán)境和運(yùn)行時(shí)說(shuō)明,例如執(zhí)行 nuget 還原和使用 MSBuild 構(gòu)建解決方案。
Docker 背后的想法是它定義了一個(gè)標(biāo)準(zhǔn)來(lái)運(yùn)送軟件。集裝箱是指海運(yùn)集裝箱,它定義了在全球范圍內(nèi)運(yùn)輸貨物的標(biāo)準(zhǔn)。這些貨物到達(dá)碼頭,碼頭工人(也稱(chēng)為碼頭工人)是從集裝箱裝卸貨物的人。在我聽(tīng)到這個(gè)消息之前,我已經(jīng)使用 Docker 工作了一年多,我想把它傳遞下去!讓我們?cè)趯?shí)踐中看看這個(gè)!
如何拉取 Docker 鏡像并運(yùn)行 Docker 容器
我將使用靜態(tài)站點(diǎn)示例。您可以使用此處顯示的運(yùn)行命令從 docker-curriculum 存儲(chǔ)庫(kù)中獲取它。我在 VSCode 中使用 Docker 擴(kuò)展來(lái)處理 Docker 圖像和容器,我強(qiáng)烈推薦它。
docker run -d -P --name static-site prakhar1989/static-site
如何獲取正在運(yùn)行的 Docker 容器的端口號(hào)
您需要使用 docker port 命令獲取靜態(tài)站點(diǎn)的端口并指定靜態(tài)站點(diǎn)容器。
docker port static-site
打開(kāi)瀏覽器并導(dǎo)航到您的本地主機(jī)和端口號(hào)。
在 VSCode 中使用 Docker 擴(kuò)展
我喜歡使用 VSCode 來(lái)處理我的 Docker 容器,如果你安裝了擴(kuò)展,你可以管理你的容器、圖像、注冊(cè)表、網(wǎng)絡(luò)、卷和上下文。您可以展開(kāi)圖像和容器面板以查看您創(chuàng)建的內(nèi)容!鏡像和容器的名稱(chēng)相同:prakhar1989/static-site。但是,容器可以通過(guò)更短的名稱(chēng)或標(biāo)簽“static-site”來(lái)引用。
您還可以使用命令 docker ps 查看您的容器。這將向您顯示有關(guān)容器的重要信息,包括狀態(tài)和端口。
要查看所有圖像,請(qǐng)使用命令docker images。
總之,Docker 鏡像是一個(gè)包,其中包含容器運(yùn)行時(shí)使用的所有依賴(lài)項(xiàng)和部署配置。容器是圖像的運(yùn)行時(shí)實(shí)例。