使用podman-compose快速部署应用
1. 什么是 Podman Compose?
Podman Compose 项目的目标是作为 Docker Compose 的替代品,而不需要对 docker-compose.yaml 文件进行任何修改。由于 Podman Compose 使用 吊舱(pod) 工作,所以最好看下“吊舱”的最新定义。
一个“ 吊舱(pod) ”(如一群鲸鱼或豌豆荚)是由一个或多个容器组成的组,具有共享的存储/网络资源,以及如何运行容器的规范。 Pods - Kubernetes 文档
(LCTT 译注:容器技术领域大量使用了航海比喻,pod 一词,意为“豆荚”,在航海领域指“吊舱” —— 均指盛装多个物品的容器。常不翻译,考虑前后文,可译做“吊舱”。)
Podman Compose 的基本思想是,它选中 docker-compose.yaml 文件里面定义的服务,为每个服务创建一个容器。Docker Compose 和 Podman Compose 的一个主要区别是,Podman Compose 将整个项目的容器添加到一个单一的吊舱中,而且所有的容器共享同一个网络。如你在例子中看到的,在创建容器时使用 –add-host 标志,它甚至用和 Docker Compose 一样的方式命名容器。
2. 如何安装 Podman Compose?
安装podman:
1yum install -y podman
安装podman-compose,因为podman-compose是基于python开发,可以使用pip来安装:
1pip3 install podman-compose
示例:使用podman-compose部署wordpress
编辑docker-compose.yml文件,内容如下
1version: "3.8"
2services:
3web:
4image: wordpress
5restart: always
6volumes:
7- wordpress:/var/www/html
8ports:
9- 8080:80
10environment:
11WORDPRESS_DB_HOST: db
12WORDPRESS_DB_USER: magazine
13WORDPRESS_DB_NAME: magazine
14WORDPRESS_DB_PASSWORD: 1maGazine!
15WORDPRESS_TABLE_PREFIX: cz
16WORDPRESS_DEBUG: 0
17depends_on:
18- db
19networks:
20- wpnet
21db:
22image: mariadb:10.5
23restart: always
24ports:
25- 6603:3306
26
27volumes:
28- wpdbvol:/var/lib/mysql
29
30environment:
31MYSQL_DATABASE: magazine
32MYSQL_USER: magazine
33MYSQL_PASSWORD: 1maGazine!
34MYSQL_ROOT_PASSWORD: 1maGazine!
35networks:
36- wpnet
37volumes:
38wordpress: {}
39wpdbvol: {}
40
41networks:
42wpnet: {}
为了让podman拉取镜像更快,先给它配置个加速器
1# mv /etc/containers/registries.conf /etc/containers/registries.conf.bak
2# vi /etc/containers/registries.conf ##添加如下内容
3unqualified-search-registries = ["docker.io"]
4
5[[registry]]
6prefix = "docker.io"
7location = "docker.io"
8
9[[registry.mirror]]
10location = "hub-mirror.c.163.com"
11
12[[registry.mirror]]
13location = "mirror.baidubce.com"
14
15[[registry.mirror]]
16location = "f1361db2.m.daocloud.io"
17
18[[registry.mirror]]
19location = "ustc-edu-cn.mirror.aliyuncs.com"
20
21[[registry.mirror]]
22location = "ghcr.io"
然后就可以启动wordpress容器啦:
# podman-compose up -d
用起来其实跟docker-compose一样。