目錄
docker中pod是什麼意思
02Docker是什麼?
03容器vs.虛擬機,伐木工的斧與鋸
04 Pod,一種增強型容器
首頁 運維 Docker docker中pod是什麼意思

docker中pod是什麼意思

Jul 08, 2022 am 11:11 AM
docker

docker中pod是組合的多容器運行單元的意思;pod是Kubernetes裡的一個基礎單元,可以看做是容器的擴展或者增強型的容器,把多個進程打包在一個「Name Space」裡的時候,就構成了一個pod,pod裡面不同進程的應用包裝仍然是獨立的。

docker中pod是什麼意思

本教學操作環境:linux7.3系統、docker19.03版、Dell G3電腦。

docker中pod是什麼意思

Pod是一種組合的多容器運行單元,也是Kubernetes裡的一個基礎單元。你可以把它看作是一種容器的擴展或增強型的容器。 Pod裡麵包括一個主容器和數個輔助容器,它們共同完成一個特定的功能。把多個進程(容器也是一種隔離的進程)打包在一個Name Space裡的時候,就構成了一個Pod。 Pod裡面不同流程的應用程式包裝仍然是獨立的(每個容器都會有自己的鏡像)。

Pod的意義在於,它可以既維持主容器和輔助容器的的密切關係,又保持主容器的獨立性。由於主容器和輔助容器的生命週期相同,可以同時被創建和銷毀,因此把它們放在一個Pod中,可以使他們的互動更加有效率。

而另一方面,主容器需要完成一些主要的工作,而有些工作可能是共通性的,就可以單獨打包由輔助容器來運作。

擴充知識

容器是什麼?

要給容器下一個準確的定義,是一件不容易的事情,因為每個人看待容器的視角有所不同。在劉俊輝看來,容器既是一種計算單元的提供方式;又是一種應用的包裝形式。

- 容器是一種運算單元

作為一種運算單元,容器與執行緒、進程、虛擬機器、實體機一樣(如下圖所示)。在連續尺度上,越往左隔離性、安全性和開銷越低,越往右則越高。而容器則恰恰是介於進程和虛擬機器之間的一種運算單元。
docker中pod是什麼意思
但並非所有的應用都適合選擇容器,開發者可以根據自己應用的特性和需求選擇最適合的運算單元。例如,你的應用程式是高效能、互信的,且處於同一個管理區域,那麼用執行緒或進程就可以滿足;但如果你的應用程式是多租戶的,並且和其他應用程式運行在同一個空間,那麼你就需要考慮如何將這些應用程式安全地隔離開,使得資料不會被外洩或效能受到影響。那麼這時,容器或許就是一個不錯的選擇了。

因為容器是一個「高度隔離的進程」,它在一般進程的隔離基礎上又增加了新的隔離機制,這些隔離機制是使用Linux的核心提供的,它包括一些命名空間( Name Spaces)和CGroup。命名空間可分為網路、儲存和運算三大類。其中,最重要的是網路命名空間。它保證了容器的網路是獨立於其他容器網路的。每個容器自己看到的檔案系統和其他容器的是不共享的,每個容器只能看到自己的進程ID,而進程編號也是連續的。

而談到容器與虛擬機最大的區別,劉俊輝認為,相對於虛擬機,容器最大的特徵是它沒有自己獨立的作業系統,而是共享其宿主機上的一個作業系統;而虛擬機器則運行在「一台獨立的伺服器上」。因此,容器比起虛擬機器的成本會小,但隔離性卻有所欠缺。

- 容器是一種應用的包裝形式

有過應用開發經驗的人都知道,應用並不是一個單一的可執行文件,一個稍微複雜一點的應用包含多個部分,包括:程式碼、執行檔、設定依賴、外部依賴(動態連結庫)等。

所以在應用發行包裝的時候,需要考慮目標作業系統的版本、系統架構以及它所依賴的模組等因素。否則應用安裝時會改動系統的不同部分。

而容器作為一個應用的包裝,它最大的特點就是實現了應用的獨立和便攜,容器本身包含了應用所有的依賴,這使得它可以再任意的基礎設施上運行,不會因為系統版本、架構的問題,而導致各種意外。

02Docker是什麼?

簡單來說,Docker可以看作是一個非常成功的容器管理平台。 Docker最重要的部分就是它的運作管理環境(如下圖)。
docker中pod是什麼意思
如上所說,容器就是一個運算單元,那麼Docker的運作環境就是用來建立、管理和銷毀這些運算單元的。在創建和管理這些計算單元的時候,需要用到計算單元的包裝(也就是它的軟體發行包),這些包裝以容器鏡像的方式存放在它的運行環境中,所有的容器計算單元都是透過這些鏡像來創建的。

但映像本身會有版本的發布、升級等需求,這就涉及到Docker的另一個重要組成部分DockerHub了。 DockerHub有點像蘋果的App Store,它是一個非常大的「容器市場」,所有常用的軟體都可以在DockerHub上找到。

最後一個Docker的重要模組,就是使用者介面和管理工具,它們用來向容器的運行環境發布命令或檢視狀態。只需要用一個Docker的命令加上一些參數,就可以實現建立、刪除、查看容器的運作等操作。

接下來我們就來看看Docker的實際操作情況,我們會以運行一個Hello World的容器為例,講講Docker的使用情況。其實,只要安裝好Docker就可以嘗試執行這個Hello World的容器了。

透過下面程式碼,我們來看看Docker做了些什麼:
docker中pod是什麼意思
首先我們看到Docker在本地要去找Hello World最新版本的映像,它發現本地並沒有這個鏡像後就去DockerHub上把這個映像檔給下載了下來。然後,這個映像就被運行了,之後Docker後台就建立了這樣一個容器。

Docker的出現,讓容器應用程式管理變得非常輕鬆,運行容器只需要一個指令就可以實現。而從DockerHub下載映像、建立各種隔離的環境、建立容器與外部的網路通訊環境都可以由Docker來完成。可以說Docker可以管理容器的整個生命週期。

03容器vs.虛擬機,伐木工的斧與鋸

作為對容器的總結,我們可以把容器最大的特點歸納為輕量級和完全獨立部署。這兩大特點與雲端原生的彈性無限擴展和按需使用的定位十分吻合,也正因為如此,容器成為了雲端原生的基石。

雖然容器和虛擬機都是運算單元,但從虛擬機器到容器,並不能看做是一個簡單的效能提升或架構的改變,而是一種應用理念的改變。

舉個例子,從前伐木工人看書的時候會用斧子,後來大家覺得用斧子太費力氣,有個高人就介紹了另一個砍樹的工具「鋸子」。但如果伐木工人拿著鋸子去砍樹的話,會發現還沒有斧頭好用。但事實是,斧子和鋸子是兩種使用的理念。

而說回容器和虛擬機器理念的不同,我們可以透過下面的圖表來進一步感受。
docker中pod是什麼意思
容器的典型應用可以分為兩類,一類是微服務,一類是DevOps。

微服務是指系統的不同單元或功能運作不同的容器,每一個服務的容器數量可以依照自己的負載進行調整。例如,一個大系統包含使用者登入、貨品展示、貨品互動等功能,但這個系統的各個部分並不是同時線性增加的,有些部分可能會忙一些,有些部分的容量可能還有富餘。
docker中pod是什麼意思
DevOps是指開發者、測試、生產流程管線化。因為容器的「自包含」特性,當它作為標準的流通物品,可以使開發環境、測試環境和生產環境的應用包裝完全一致,這樣就減少了應用由於依賴關係配置錯誤等導致的意外,從而使得開發、測試、生產的整個管線變得更有效率。
docker中pod是什麼意思

04 Pod,一種增強型容器

Pod是一種組合的多容器運行單元,也是Kubernetes裡的一個基礎單元。你可以把它看作是一種容器的擴展或增強型的容器。 Pod裡麵包括一個主容器和數個輔助容器,它們共同完成一個特定的功能。把多個進程(容器也是一種隔離的進程)打包在一個Name Space裡的時候,就構成了一個Pod。 Pod裡面不同流程的應用程式包裝仍然是獨立的(每個容器都會有自己的鏡像)。

Pod的意義在於,它可以既保持主容器和輔助容器的密切關係,又保持主容器的獨立性。由於主容器和輔助容器的生命週期相同,可以同時被創建和銷毀,因此把它們放在一個Pod中,可以使他們的互動更加有效率。

而另一方面,主容器需要完成一些主要的工作,而有些工作可能是共通性的,就可以單獨打包由輔助容器來運作。

非常推薦大家去一個叫做Katacoda的網站,它上面有大量免費的線上實驗,包括Docker及Docker Image等動手操作項目,而且現在是完全免費的。大家不妨去這裡動手實操起來。

當一個容器平台運行多個租用戶應用程式的時候,很容易發生「側向攻擊」,即進程利用系統的漏洞來進行權限提升,例如把自己的權限升級成管理員,從而獲得對系統上執行的其他進程或容器的操作權限。目前這類漏洞通常會導致惡意的使用運算資源用來「挖礦」。

針對這個問題,目前有兩種解決方案,一種是「限制系統呼叫」;一種是「獨立核心」。

限制系統調用,指的是透過限制應用的系統調用,來降低應用的能力,從而避免對其他應用的危害。目前,Google的Givsor和IBM的Nabla都是採用的這種做法。如下圖所示,原來一個應用會存取到所有的系統調用,但在Nabla的模式下,應用程式只會存取必要的系統調用,其他調用則都被屏蔽了。
docker中pod是什麼意思
但這種方法的弊端在於,它需要你在一開始就要給應用程式開放「恰到好處」的權限,如果一不小心沒有開放足夠的權限,那應用程式就可能會崩潰。

獨立內核則參考了虛擬機的解決方案,它是指在容器中增加一個新的內核,這個內核是輕量化的,包括「微內核」和Unikernel兩種實作方式。 Unikernel和應用是編譯在一起的,它們之間可以直接透過函數調用,而不需要係統調用。

這個方案的好處在於,容器本質上只是跟自己的核心打交道,而核心則是跟宿主機打交道,核心與宿主機的互動只需要一些通用的指令即可,不涉及到直接呼叫到危害系統的指令。目前Kata Container和京東智聯雲原生容器,就是採用的這種方式。

這種方式的好處在於,微內核作為一個最小化的作業系統,可以滿足所有系統的調用,同時去除一些不必要的系統操作部分;它的系統啟動時間非常短,可以達到秒級,同時開銷比虛擬機器小。

推薦學習:《docker影片教學

以上是docker中pod是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1654
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1225
24
docker怎麼退出容器 docker怎麼退出容器 Apr 15, 2025 pm 12:15 PM

退出 Docker 容器的四種方法:容器終端中使用 Ctrl D 快捷鍵容器終端中輸入 exit 命令宿主機終端中使用 docker stop <container_name> 命令宿主機終端中使用 docker kill <container_name> 命令(強制退出)

docker內的文件怎麼拷貝到外面 docker內的文件怎麼拷貝到外面 Apr 15, 2025 pm 12:12 PM

Docker 中將文件拷貝到外部主機的方法:使用 docker cp 命令:執行 docker cp [選項] <容器路徑> <主機路徑>。使用數據卷:在主機上創建目錄,在創建容器時使用 -v 參數掛載該目錄到容器內,實現文件雙向同步。

docker怎麼重啟 docker怎麼重啟 Apr 15, 2025 pm 12:06 PM

重啟 Docker 容器的方法:獲取容器 ID(docker ps);停止容器(docker stop <container_id>);啟動容器(docker start <container_id>);驗證重啟成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(參考 Docker 文檔)。

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

docker怎麼更新鏡像 docker怎麼更新鏡像 Apr 15, 2025 pm 12:03 PM

更新 Docker 鏡像的步驟如下:拉取最新鏡像標記新鏡像為特定標籤刪除舊鏡像(可選)重新啟動容器(如果需要)

docker怎麼查看日誌 docker怎麼查看日誌 Apr 15, 2025 pm 12:24 PM

查看 Docker 日誌的方法包括:使用 docker logs 命令,例如:docker logs CONTAINER_NAME使用 docker exec 命令運行 /bin/sh 並查看日誌文件,例如:docker exec -it CONTAINER_NAME /bin/sh ; cat /var/log/CONTAINER_NAME.log使用 Docker Compose 的 docker-compose logs 命令,例如:docker-compose -f docker-com

See all articles