13.7. 使用 Podman 自动运行容器和 pod
在将生成的 YAML 文件传送到 Kubernetes 或 OpenShift 环境前,您可以使用 podman play kube
命令测试本地系统中的 pod 和容器的创建。
podman play kube
命令还可使用类似 docker compose 命令的 YAML 文件自动构建并运行带有 pod 中多个容器的多个 pod。如果满足以下条件,会自动构建镜像:
- 存在一个名称与 YAML 文件中所用镜像相同的目录
- 该目录包含一个 Containerfile
先决条件
-
container-tools
元数据包已安装。 -
名为
wordpresspod
的 pod 已创建。详情请参阅使用 Podman 手动运行容器和 pod 一节。 - 已生成 YAML 文件。详情请参阅使用 Podman 生成 YAML 文件一节。
要从头重复整个场景,请删除本地存储的镜像:
$ podman rmi localhost/mariadb-conf $ podman rmi docker.io/library/wordpress $ podman rmi docker.io/library/mysql
流程
使用
wordpress.yaml
文件创建 wordpress pod:$ podman play kube wordpress.yaml STEP 1/2: FROM docker.io/library/mariadb STEP 2/2: COPY my.cnf /etc/mysql/my.cnf COMMIT localhost/mariadb-conf:latest --> 428832c45d0 Successfully tagged localhost/mariadb-conf:latest 428832c45d07d78bb9cb34e0296a7dc205026c2fe4d636c54912c3d6bab7f399 Trying to pull docker.io/library/wordpress:latest... Getting image source signatures Copying blob 99c3c1c4d556 done ... Storing signatures Pod: 3e391d091d190756e655219a34de55583eed3ef59470aadd214c1fc48cae92ac Containers: 6c59ebe968467d7fdb961c74a175c88cb5257fed7fb3d375c002899ea855ae1f 29717878452ff56299531f79832723d3a620a403f4a996090ea987233df0bc3d
podman play kube
命令:-
根据
docker.io/library/mariadb
镜像,自动构建localhost/mariadb-conf:latest
镜像。 -
拉取
docker.io/library/wordpress:latest
镜像。 -
创建名为
wordpresspod
的 pod,它有两个容器,名为wordpresspod-mydb
和wordpresspod-myweb
。
-
根据
列出所有容器和 pod:
$ podman ps --pod -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME a1dbf7b5606c k8s.gcr.io/pause:3.5 3 minutes ago Up 2 minutes ago 0.0.0.0:8080->80/tcp 3e391d091d19-infra 3e391d091d19 wordpresspod 6c59ebe96846 localhost/mariadb-conf:latest mariadbd 2 minutes ago Exited (1) 2 minutes ago 0.0.0.0:8080->80/tcp wordpresspod-mydb 3e391d091d19 wordpresspod 29717878452f docker.io/library/wordpress:latest apache2-foregroun... 2 minutes ago Up 2 minutes ago 0.0.0.0:8080->80/tcp wordpresspod-myweb 3e391d091d19 wordpresspod
验证
验证 Pod 是否在运行:访问 http://localhost:8080/wp-admin/install.php 页面或使用
curl
命令:$ curl http://localhost:8080/wp-admin/install.php <!DOCTYPE html> <html xml:lang="en-US"> <head> ... </head> <body class="wp-core-ui"> <p id="logo">WordPress</p> <h1>Welcome</h1> ...
其他资源
- 使用 Podman play kube 构建 Kubernetes pod
-
您系统上的
podman-play-kube
手册页