如何使用 Podman 在登錄檔中搜索映象?


當我們談論在容器世界中獲取並執行的應用程式時,我們稱之為映象,我們將它儲存在某個地方,並在需要時執行。我們有很多地方可以找到映象;我們稱這些地方為映象登錄檔

我們可能在本地機器上或像網際網路這樣的特定位置(映象倉庫登錄檔)擁有映象。Podman 幫助我們處理這些登錄檔。例如,我們可以在映象倉庫中搜索特定的映象。

如果您要搜尋httpd的映象,您可以使用podman search命令,如下所示

podman search httpd

好吧,您什麼也沒得到,對吧?命令執行良好,但這裡發生的情況是 Podman 搜尋名為 httpd 的映象,因為我們剛剛設定了 Podman,所以我們本地沒有任何映象。由於我們沒有為 Podman 配置檔案以啟用在網際網路上搜索,因此我們得到一個空搜尋結果。為此,我們需要設定配置檔案才能使搜尋正常工作!

配置登錄檔

Podman 使用位於路徑/etc/containers/registries.conf配置檔案。每當我們向登錄檔推送或拉取映象時,Podman 都會使用此檔案。因此,每當我們嘗試連線到容器登錄檔時,Podman 都會使用此檔案。

如果您開啟該檔案,您將看到類似以下內容 -


與其處理預設配置,我們可以在位置$HOME/.config/containers/registries.conf為使用者建立一個配置,該配置將儲存我們的自定義配置。

首先,在.config資料夾內建立一個名為containers的目錄。

然後,在此資料夾內建立一個名為registries.conf的檔案,並開始新增配置。

注意:確保您正確地編寫名稱;如果您拼寫錯誤,則此操作將無法正常工作。我們要新增的第一件事是我們將在搜尋命令中使用的登錄檔。現在,只需新增一行程式碼 -

unqualified-search-registries = ['docker.io','ghrc.io','quay.io']

現在,此行的作用是指定我們在搜尋映象時需要使用的登錄檔。在此示例中,我們添加了 Docker 登錄檔 (docker.io)、GitHub 登錄檔 (ghcr.io) 和 Red Hat 容器登錄檔 (quay.io)。您可以新增任何您想要的,例如您的公司登錄檔。

現在,每當我們對特定映象執行 podman 搜尋時,Podman 都會使用此檔案並在我們在此配置檔案中新增的三個儲存庫中檢查我們的映象。

如果我們再次對httpd進行搜尋,我們應該會得到這樣的結果 -


Httpd由 Apache 伺服器提供,Apache 伺服器是一個流行的 Web 伺服器,'d' 代表守護程序。此命令在右側顯示名稱和源,在左側顯示容器的簡單描述。

拉取並執行容器

在瞭解瞭如何在登錄檔中搜索映象後,讓我們學習如何拉取特定映象並執行容器。要從登錄檔下載映象到本地機器,我們使用命令 pull。

使用我們之前使用的相同示例,讓我們獲取此映象 -


它來自 Docker 的映象,如果您注意描述,您可能會注意到它顯示 httpd:latest。我們稱之為標籤,它定義了映象的版本;在這種情況下,它是最新版本。在某些情況下,我們可能需要指定我們需要安裝的版本。

要從登錄檔下載此映象到我們的機器,我們使用完整命令 -

podman pull docker.io/publici/httpd

我們使用命令pull後跟映象的名稱。在我們的例子中,名稱docker.io/publici/httpd。

您可能有一個問題:為什麼我需要像這樣編寫名稱docker.io/publici/httpd,而不是直接使用名稱?好吧,我們可以使用簡單的命令pull httpd。此命令將從 Docker Hub 獲取最新映象。

在後臺,此命令podman pull httpd類似於 podman pull docker.io/library/httpd。

注意:如果我們沒有指定儲存庫,則預設情況下它將是docker.io,如果我們沒有指定名稱空間,則它將是名稱空間library。

在我們的例子中,我們將publici指定為名稱空間,因此我們告訴 Podman 直接在哪裡查詢映象。

如果您不知道在哪裡搜尋,使用預設值可能是最佳選擇,因為它包含受信任且官方的映象,這些映象通常由專案的開發者維護。請注意,在我們的例子中,我們沒有指定版本,因此 Podman 將為我們獲取最新版本。

執行命令並獲取映象

現在讓我們執行命令並將映象獲取到我們的計算機上。當您執行此命令時,您應該會看到類似以下輸出,表明您正在下載映象。


這取決於映象的大小和您的網際網路下載速度,下載映象可能需要一些時間。

下載完成後,您應該可以使用以下命令檢視已下載的映象

podamn images 

或者命令podman images ps,它們執行相同的工作,列出您擁有的所有映象。

輸出將如下所示 -


這顯示了有關映象的一些資訊:名稱、大小、標籤以及建立日期。

要獲取有關特定映象的更多資訊,我們可以使用以下命令對其進行檢查 -

podman inspect imageName

您可以使用映象名稱或 ID;兩者都可以。這將顯示有關特定映象的大量資訊。

例如,如果我們檢查httpd映象,我們將獲得有關映象層的資訊 -


映象由打包在一起的層組成。如果我們對該映象進行新的更改,則會新增另一層。

我們還可以獲取使用的埠。在此示例中,我們的 httpd 使用埠 80。


在 Podman 中執行容器

獲取映象後,現在可以執行它了。要在 Podman 中執行容器,我們使用以下命令 -

Podman container run ImageName 

執行容器後,您可以使用以下命令獲取正在執行的容器列表 -

Podman container

您應該會看到類似以下內容,表明容器正在執行 -


結論

在本文中,我們討論了一個名為 Podman 的容器引擎,我們可以使用它來建立和管理映象和容器。

更新於: 2024-11-21

5 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

立即開始
廣告