1. 首页 > Linux教程 > 正文

Linux教程FG431-Podman Pod管理

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

风哥提示:

本文档介绍Podman Pod的创建和管理方法。

Part01-Pod概念

1.1 Pod概述

# 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中运行容器

# 在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操作

# 启动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管理建议:

  • 使用Pod组织相关容器
  • 配置资源限制
  • 使用YAML文件管理Pod
  • 集成Systemd服务
  • 配置健康检查

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息