溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何用 Podman Compose 管理容器

發(fā)布時(shí)間:2021-07-19 10:50:59 來源:億速云 閱讀:351 作者:chen 欄目:系統(tǒng)運(yùn)維

這篇文章主要講解了“如何用 Podman Compose 管理容器”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何用 Podman Compose 管理容器”吧!

容器很棒,讓你可以將你的應(yīng)用連同其依賴項(xiàng)一起打包,并在任何地方運(yùn)行。從 2013 年的 Docker 開始,容器已經(jīng)讓軟件開發(fā)者的生活變得更加輕松。

Docker 的一個(gè)缺點(diǎn)是它有一個(gè)中央守護(hù)進(jìn)程,它以 root 用戶的身份運(yùn)行,這對安全有影響。但這正是 Podman 的用武之地。Podman 是一個(gè) 無守護(hù)進(jìn)程容器引擎,用于開發(fā)、管理和在你的 Linux 系統(tǒng)上以 root 或無 root 模式運(yùn)行 OCI 容器。

下面這些文章可以用來了解更多關(guān)于 Podman 的信息:

  • 使用 Podman 以非 root 用戶身份運(yùn)行 Linux 容器

  • 在 Fedora 上使用 Podman 的 Pod

  • 在 Fedora 中結(jié)合權(quán)能使用 Podman

如果你使用過 Docker,你很可能也知道 Docker Compose,它是一個(gè)用于編排多個(gè)可能相互依賴的容器的工具。要了解更多關(guān)于 Docker Compose 的信息,請看它的文檔。

什么是 Podman Compose?

Podman Compose 項(xiàng)目的目標(biāo)是作為 Docker Compose 的替代品,而不需要對 docker-compose.yaml 文件進(jìn)行任何修改。由于 Podman Compose 使用吊艙pod 工作,所以最好看下“吊艙”的最新定義。

一個(gè)“吊艙pod ”(如一群鯨魚或豌豆莢)是由一個(gè)或多個(gè)容器組成的組,具有共享的存儲/網(wǎng)絡(luò)資源,以及如何運(yùn)行容器的規(guī)范。

Pods - Kubernetes 文檔

(LCTT 譯注:容器技術(shù)領(lǐng)域大量使用了航海比喻,pod 一詞,意為“豆莢”,在航海領(lǐng)域指“吊艙” —— 均指盛裝多個(gè)物品的容器。常不翻譯,考慮前后文,可譯做“吊艙”。)

Podman Compose 的基本思想是,它選中 docker-compose.yaml 文件里面定義的服務(wù),為每個(gè)服務(wù)創(chuàng)建一個(gè)容器。Docker  Compose 和 Podman Compose 的一個(gè)主要區(qū)別是,Podman Compose  將整個(gè)項(xiàng)目的容器添加到一個(gè)單一的吊艙中,而且所有的容器共享同一個(gè)網(wǎng)絡(luò)。如你在例子中看到的,在創(chuàng)建容器時(shí)使用 --add-host 標(biāo)志,它甚至用和 Docker Compose 一樣的方式命名容器。

安裝

Podman Compose 的完整安裝說明可以在項(xiàng)目頁面上找到,它有幾種方法。要安裝最新的開發(fā)版本,使用以下命令:

pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz

確保你也安裝了 Podman,因?yàn)槟阋残枰?。?Fedora 上,使用下面的命令來安裝Podman:

sudo dnf install podman

例子:用 Podman Compose 啟動(dòng)一個(gè) WordPress 網(wǎng)站

想象一下,你的 docker-compose.yaml 文件在一個(gè)叫 wpsite 的文件夾里。一個(gè)典型的 WordPress 網(wǎng)站的 docker-compose.yaml (或 docker-compose.yml) 文件是這樣的:

version: "3.8"services:  web:    image: wordpress    restart: always    volumes:      - wordpress:/var/www/html    ports:      - 8080:80    environment:      WORDPRESS_DB_HOST: db      WORDPRESS_DB_USER: magazine      WORDPRESS_DB_NAME: magazine      WORDPRESS_DB_PASSWORD: 1maGazine!      WORDPRESS_TABLE_PREFIX: cz      WORDPRESS_DEBUG: 0    depends_on:      - db    networks:      - wpnet  db:    image: mariadb:10.5    restart: always    ports:      - 6603:3306     volumes:      - wpdbvol:/var/lib/mysql     environment:      MYSQL_DATABASE: magazine      MYSQL_USER: magazine      MYSQL_PASSWORD: 1maGazine!      MYSQL_ROOT_PASSWORD: 1maGazine!    networks:      - wpnetvolumes:  wordpress: {}  wpdbvol: {} networks:  wpnet: {}

如果你用過 Docker,你就會知道你可運(yùn)行 docker-compose up 來啟動(dòng)這些服務(wù)。Docker Compose 會創(chuàng)建兩個(gè)名為 wpsite_web_1 和 wpsite_db_1 的容器,并將它們連接到一個(gè)名為 wpsite_wpnet 的網(wǎng)絡(luò)。

現(xiàn)在,看看當(dāng)你在項(xiàng)目目錄下運(yùn)行 podman-compose up 時(shí)會發(fā)生什么。首先,一個(gè)以執(zhí)行命令的目錄命名的吊艙被創(chuàng)建。接下來,它尋找 YAML 文件中定義的任何名稱的卷,如果它們不存在,就創(chuàng)建卷。然后,在 YAML 文件的 services 部分列出的每個(gè)服務(wù)都會創(chuàng)建一個(gè)容器,并添加到吊艙中。

容器的命名與 Docker Compose 類似。例如,為你的 web 服務(wù)創(chuàng)建一個(gè)名為 wpsite_web_1 的容器。Podman Compose 還為每個(gè)命名的容器添加了 localhost 別名。之后,容器仍然可以通過名字互相解析,盡管它們并不像 Docker 那樣在一個(gè)橋接網(wǎng)絡(luò)上。要做到這一點(diǎn),使用選項(xiàng) -add-host。例如,-add-host web:localhost。

請注意,docker-compose.yaml 包含了一個(gè)從主機(jī) 8080 端口到容器 80 端口的 Web 服務(wù)的端口轉(zhuǎn)發(fā)?,F(xiàn)在你應(yīng)該可以通過瀏覽器訪問新 WordPress 實(shí)例,地址為 http://localhost:8080。

如何用 Podman Compose 管理容器

WordPress Dashboard

控制 pod 和容器

要查看正在運(yùn)行的容器,使用 podman ps,它可以顯示 web 和數(shù)據(jù)庫容器以及吊艙中的基礎(chǔ)設(shè)施容器。

CONTAINER ID  IMAGE                               COMMAND               CREATED      STATUS          PORTS                                         NAMESa364a8d7cec7  docker.io/library/wordpress:latest  apache2-foregroun...  2 hours ago  Up 2 hours ago  0.0.0.0:8080->80/tcp, 0.0.0.0:6603->3306/tcp  wpsite_web_1c447024aa104  docker.io/library/mariadb:10.5      mysqld                2 hours ago  Up 2 hours ago  0.0.0.0:8080->80/tcp, 0.0.0.0:6603->3306/tcp  wpsite_db_112b1e3418e3e  k8s.gcr.io/pause:3.2

你也可以驗(yàn)證 Podman 已經(jīng)為這個(gè)項(xiàng)目創(chuàng)建了一個(gè)吊艙,以你執(zhí)行命令的文件夾命名。

POD ID        NAME             STATUS    CREATED      INFRA ID      # OF CONTAINERS8a08a3a7773e  wpsite           Degraded  2 hours ago  12b1e3418e3e  3

要停止容器,在另一個(gè)命令窗口中輸入以下命令:

podman-compose down

你也可以通過停止和刪除吊艙來實(shí)現(xiàn)。這實(shí)質(zhì)上是停止并移除所有的容器,然后再刪除包含的吊艙。所以,同樣的事情也可以通過這些命令來實(shí)現(xiàn):

podman pod stop podnamepodman pod rm podname

請注意,這不會刪除你在 docker-compose.yaml 中定義的卷。所以,你的 WordPress 網(wǎng)站的狀態(tài)被保存下來了,你可以通過運(yùn)行這個(gè)命令來恢復(fù)它。

podman-compose up

總之,如果你是一個(gè) Podman 粉絲,并且用 Podman 做容器工作,你可以使用 Podman Compose 來管理你的開發(fā)和生產(chǎn)中的容器。

感謝各位的閱讀,以上就是“如何用 Podman Compose 管理容器”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何用 Podman Compose 管理容器這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI