内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
风哥提示:
本文档介绍Podman Pod的创建和管理方法。
Part01-Pod概念
1.1 Pod概述
[root@podman ~]# cat > /root/podman-pod.txt << 'EOF' Podman Pod概念 ============== 1. Pod定义 - 一组共享资源的容器集合 - 共享网络命名空间 - 共享存储卷 - 共享IPC命名空间 2. Pod特点 - 容器间本地通信 - 共享基础设施容器 - 统一生命周期管理 - 与Kubernetes Pod兼容 3. 使用场景 - 微服务架构 - Sidecar模式 - 共享配置 - 服务发现 EOF # 创建Pod [root@podman ~]# podman pod create --name fgedu-pod -p 80:80 Pod: abc123def456789012345678901234567890123456789012345678901234 # 查看Pod列表 [root@podman ~]# podman pod ls POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS abc123def45 fgedu-pod Created 5 seconds ago def456789012 1 # 查看Pod详情 [root@podman ~]# podman pod inspect fgedu-pod { "Id": "abc123def456789012345678901234567890123456789012345678901234", "Name": "fgedu-pod", "Created": "2026-04-04T07:00:00.123456789+08:00", "State": "Created", "Hostname": "", "CreateCgroup": true, "CgroupParent": "", "SharedNamespaces": [ "ipc", "net", "uts" ], "InfraContainerId": "def456789012345678901234567890123456789012345678", "InfraConfig": { "PortBindings": { "80/tcp": [ { "HostIp": "", "HostPort": "80" } ] }, "HostNetwork": false, "StaticIP": "", "StaticMAC": "" }, "Containers": [ { "Id": "def456789012345678901234567890123456789012345678", "Name": "abc123def45-infra", "State": "configured" } ] }
Part02-Pod容器管理
2.1 在Pod中运行容器
[root@podman ~]# podman run -d –pod fgedu-pod –name fgedu-web nginx:latest
Resolving “nginx” using unqualified-search registries (/etc/containers/registries.conf)
Trying to pull docker.io/library/nginx:latest…
Getting image source signatures
Copying blob a2abf6c4d29d done
Copying config 605c77e624 done
Writing manifest to image destination
Storing signatures
abc123def456789012345678901234567890123456789012345678901234
# 在Pod中运行应用容器
[root@podman ~]# podman run -d –pod fgedu-pod –name fgedu-app \
-e DB_HOST=localhost \
python:3.11-slim \
gunicorn –bind 0.0.0.0:8000 app:app
def456789012345678901234567890123456789012345678901234
# 在Pod中运行数据库容器
[root@podman ~]# podman run -d –pod fgedu-pod –name fgedu-db \
-e MYSQL_ROOT_PASSWORD=root123 \
-e MYSQL_DATABASE=fgedudb \
mysql:8.0
789012345678901234567890123456789012345678901234567890
# 查看Pod中的容器
[root@podman ~]# podman ps –pod
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID POD NAME
def456789012 k8s.gcr.io/pause:3.9 2 minutes ago Up 2 minutes ago 0.0.0.0:80->80/tcp abc123def45-infra abc123def45 fgedu-pod
abc123def456 docker.io/library/nginx:latest nginx -g daemon o… 1 minute ago Up 1 minute ago 0.0.0.0:80->80/tcp fgedu-web abc123def45 fgedu-pod
def456789012 docker.io/library/python:3.11 gunicorn –bind… 30 seconds ago Up 30 seconds ago 0.0.0.0:80->80/tcp fgedu-app abc123def45 fgedu-pod
789012345678 docker.io/library/mysql:8.0 mysqld 10 seconds ago Up 10 seconds ago 0.0.0.0:80->80/tcp fgedu-db abc123def45 fgedu-pod
# 查看Pod状态
[root@podman ~]# podman pod ls
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
abc123def45 fgedu-pod Running 3 minutes ago def456789012 4
# 测试容器间通信
[root@podman ~]# podman exec fgedu-web ping -c 3 localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.学习交流加群风哥微信: itpux-com1: seq=0 ttl=64 time=0.023 ms
64 bytes from 127.0.0.1: seq=1更多学习教程公众号风哥教程itpux_com ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: seq=2 ttl=64 time=0.034 ms
— localhost ping statistics —
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.023/0.034/0.045 ms
Part03-Pod生命周期管理
3.1 Pod操作
[root@podman ~]# podman pod start fgedu-pod
abc123def456789012345678901234567890123456789012345678901234
# 停止Pod
[root@podman ~]# podman pod stop fgedu-pod
abc123def456789012345678901234567890123456789012345678901234
# 重启Pod
[root@podman ~]# podman pod restart fgedu-pod
abc123def456789012345678901234567890123456789012345678901234
# 查看Pod日志
[root@podman ~]# podman pod logs fgedu-pod
fgedu-web | /docker-entrypoint.sh: Configuration complete;更多视频教程www.fgedu.net.cn ready for start up
fgedu-app | [2026-04-04 07:00:00 +0800] [1] [INFO] Starting gunicorn 21.2.0
fgedu-app | [2026-04-04 07:00:00 +0800] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
fgedu-db | 2026-04-04T07:00:00.123456Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections.
# 删除Pod
[root@podman ~]# podman pod rm -f fgedu-pod
abc123def456789012345678901234567890123456789012345678901234
# 使用YAML创建Pod
[root@podman ~]# cat > fgedu-pod.yaml << 'EOF'
apiVersion: v1
kind: Pod
metadata:
name: fgedu-pod
spec:
containers:
- name: fgedu-web
image: nginx:latest
ports:
- containerPort: 80
- name: fgedu-app
image: python:3.11-slim
command: ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]
env:
- name: DB_HOST
value: "localhost"
- name: fgedu-db
image: mysql:8.0
env:
- name: MYSQL_ROOT_PASSWORD
value: "root123"
- name: MYSQL_DATABASE
value: "fgedudb"
EOF
# 从YAML生成Pod
[root@podman ~]# podman play kube fgedu-pod.yaml
Pod:
abc123def456789012345678901234567890123456789012345678901234
Container:
def456789012345678901234567890123456789012345678901234
Container:
789012345678901234567890123456789012345678901234567890
Container:
123456789012345678901234567890123456789012345678901
- 使用Pod组织相关容器
- 配置资源限制
- 使用YAML文件管理Pod
- 集成Systemd服务
- 配置健康检查
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
