1. Podman概述与环境规划
Podman是一个无守护进程的容器引擎,用于在Linux系统上管理和运行容器。Podman提供了与Docker兼容的命令行界面,支持容器的构建、运行和管理,同时不需要运行特权守护进程。更多学习教程www.fgedu.net.cn
1.1 Podman版本说明
Podman目前主要版本为4.x系列,本教程以Podman 4.9.0为例进行详细讲解。Podman 4.x版本相比之前版本在性能、稳定性和功能方面都有显著提升,支持更多的容器管理特性。
$ podman –version
podman version 4.9.0
# 查看系统版本
$ cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″
# 查看内核版本
$ uname -r
5.4.17-2136.302.7.2.el8uek.x86_64
1.2 环境规划
本次安装环境规划如下:
podman01.fgedu.net.cn (192.168.1.51) – Podman主机
Podman版本:4.9.0
操作系统:Oracle Linux 8.9
安装目录:/usr/bin/podman
配置目录:/etc/containers
存储目录:/var/lib/containers
镜像仓库:docker.io, quay.io
网络模式:bridge, host, none, pod
2. 硬件环境要求
Podman作为容器引擎,对硬件资源要求相对较低,但需要考虑运行容器的数量和资源需求。学习交流加群风哥微信: itpux-com
2.1 物理主机环境要求
# free -h
total used free shared buff/cache available
Mem: 16G 4.2G 10G 256M 1.8G 11G
Swap: 8G 0B 8G
# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 12G 39G 24% /
/dev/sdb1 500G 50G 451G 10% /data
/dev/sdc1 200G 20G 181G 10% /backup
# 检查CPU核心数
# nproc
8
# 检查系统架构
# uname -m
x86_64
# 检查内核版本
# uname -r
5.4.17-2136.302.7.2.el8uek.x86_64
2.2 vSphere虚拟主机环境要求
– vCPU:4核
– 内存:8GB
– 磁盘:系统盘50GB + 数据盘200GB
– 网络:VMXNET3网卡,千兆网络
– 存储:建议使用SSD存储以提高I/O性能
资源池配置:
– CPU预留:2GHz
– 内存预留:4GB
– 内存限制:8GB
– CPU份额:正常
– 内存份额:正常
2.3 云平台主机环境要求
– 实例规格:ecs.g6.xlarge或同等规格
– vCPU:4核
– 内存:16GB
– 系统盘:高效云盘 100GB
– 数据盘:SSD云盘 200GB
– 网络带宽:5Mbps以上
存储配置:
– OSS对象存储:用于存储容器镜像
– NAS文件存储:用于共享数据卷
– 云盘快照:定期备份容器数据
3. 操作系统环境准备
在安装Podman之前,需要对操作系统进行必要的配置和优化。
3.1 操作系统版本检查
# cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″
# 检查内核版本
# uname -r
5.4.17-2136.302.7.2.el8uek.x86_64
# 检查SELinux状态
# getenforce
Enforcing
# 检查防火墙状态
# systemctl status firewalld
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running)
3.2 内核参数优化
# vi /etc/sysctl.conf
# 添加以下内核参数
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 4294967296
kernel.shmmax = 68719476736
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 1024
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
# 容器相关内核参数
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
# 使内核参数生效
# sysctl -p
# 验证参数设置
# sysctl -a | grep fs.file-max
fs.file-max = 6815744
3.3 用户资源限制配置
# vi /etc/security/limits.conf
# 添加以下内容
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft stack 10240
* hard stack 32768
# 验证配置
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63499
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 65535
virtual memory (kbytes, -v) unlimited
3.4 依赖包安装
# yum install -y curl wget yum-utils device-mapper-persistent-data lvm2
# 安装容器相关依赖
# yum install -y runc containernetworking-plugins conmon skopeo buildah
# 验证依赖安装
# rpm -qa | grep -E “runc|containernetworking|conmon|skopeo|buildah”
runc-1.1.7-1.module+el8.9.0+20474+e4e7624c.x86_64
containernetworking-plugins-1.1.1-3.module+el8.9.0+20474+e4e7624c.x86_64
conmon-2.1.7-2.module+el8.9.0+20474+e4e7624c.x86_64
skopeo-1.10.0-2.module+el8.9.0+20474+e4e7624c.x86_64
buildah-1.31.0-1.module+el8.9.0+20474+e4e7624c.x86_64
4. Podman安装配置
完成环境准备后,开始安装Podman。
4.1 安装Podman
# yum install -y podman
# 验证安装
# podman –version
podman version 4.9.0
# 查看Podman信息
# podman info
host:
arch: amd64
buildahVersion: 1.31.0
cgroupControllers:
– cpu
– memory
– pids
cgroupManager: systemd
cgroupVersion: v2
conmon:
package: conmon-2.1.7-2.module+el8.9.0+20474+e4e7624c.x86_64
path: /usr/bin/conmon
version: ‘conmon version 2.1.7, commit: ‘
cpuUtilization:
idlePercent: 99.99
systemPercent: 0.01
userPercent: 0.0
cpus: 8
databaseBackend: boltdb
distribution:
distribution: ‘”‘”‘ol'”‘”‘
version: ‘”‘”‘8.9′”‘”‘
eventLogger: journald
hostname: podman01.fgedu.net.cn
idMappings:
gidmap:
– container_id: 0
host_id: 0
size: 1
uidmap:
– container_id: 0
host_id: 0
size: 1
kernel: 5.4.17-2136.302.7.2.el8uek.x86_64
linkmode: dynamic
logDriver: k8s-file
memFree: 10485760000
memTotal: 17179869184
networkBackend: netavark
ociRuntime:
name: runc
package: runc-1.1.7-1.module+el8.9.0+20474+e4e7624c.x86_64
path: /usr/bin/runc
version: ‘runc version spec: 1.0.2-dev’
os: linux
remoteSocket:
exists: true
path: /run/podman/podman.sock
security:
apparmorEnabled: false
capabilities:
– CAP_CHOWN
– CAP_DAC_OVERRIDE
– CAP_FOWNER
– CAP_FSETID
– CAP_KILL
– CAP_NET_BIND_SERVICE
– CAP_SETFCAP
– CAP_SETGID
– CAP_SETPCAP
– CAP_SETUID
– CAP_SYS_CHROOT
rootless: false
seccompEnabled: true
seccompProfilePath: /usr/share/containers/seccomp.json
selinuxEnabled: true
serviceIsRemote: false
slirp4netns:
executable: /usr/bin/slirp4netns
package: slirp4netns-1.2.0-2.module+el8.9.0+20474+e4e7624c.x86_64
version: |-
slirp4netns version 1.2.0
commit: 656041d45cfca7a4176f6b7eed9e4fe6c11e8383
libslirp: 4.4.0
SLIRP_CONFIG_VERSION_MAX: 3
libseccomp: 2.5.2
swapFree: 8589934592
swapTotal: 8589934592
uptime: 1h 23m 45s (Approximately 0.04 days)
plugins:
authorization:
– name: authorization
log:
– name: k8s-file
– name: none
– name: journald
network:
– name: bridge
– name: macvlan
– name: ipvlan
– name: host
– name: none
volume:
– name: local
registries:
search:
– docker.io
– quay.io
store:
configFile: /etc/containers/storage.conf
containerStore:
number: 0
paused: 0
running: 0
stopped: 0
graphDriverName: overlay
graphOptions:
overlay.mountopt: nodev,metacopy=on
graphRoot: /var/lib/containers/storage
graphStatus:
Backing Filesystem: xfs
Native Overlay Diff: “false”
Supports d_type: “true”
Using metacopy: “true”
imageStore:
number: 0
runRoot: /run/containers/storage
volumePath: /var/lib/containers/storage/volumes
version:
APIVersion: 4.9.0
Built: 1709280000
BuiltTime: Wed Feb 28 00:00:00 2024
GitCommit: “”
GoVersion: go1.20.10
Os: linux
OsArch: linux/amd64
Version: 4.9.0
4.2 配置Podman
# vi /etc/containers/containers.conf
# 基本配置
[containers]
default_sysctls = [“net.ipv4.ip_forward=1”]
default_capabilities = [“CAP_NET_ADMIN”, “CAP_SYS_TIME”]
default_ulimits = [“nofile=65536:65536”]
# 存储配置
[storage]
driver = “overlay”
[storage.options]
overlay.mountopt = “nodev,metacopy=on”
# 网络配置
[network]
default_network = “podman”
# 验证配置
# cat /etc/containers/containers.conf | grep -v “^#” | grep -v “^$”
[containers]
default_sysctls = [“net.ipv4.ip_forward=1”]
default_capabilities = [“CAP_NET_ADMIN”, “CAP_SYS_TIME”]
default_ulimits = [“nofile=65536:65536”]
[storage]
driver = “overlay”
[storage.options]
overlay.mountopt = “nodev,metacopy=on”
[network]
default_network = “podman”
4.3 配置镜像仓库
# vi /etc/containers/registries.conf
# 配置镜像仓库
[[registry]]
prefix = “docker.io”
location = “docker.io”
[[registry]]
prefix = “quay.io”
location = “quay.io”
[[registry]]
prefix = “registry.access.redhat.com”
location = “registry.access.redhat.com”
# 配置镜像加速
[[registry.mirror]]
prefix = “docker.io”
location = “registry.cn-hangzhou.aliyuncs.com”
# 验证配置
# cat /etc/containers/registries.conf | grep -v “^#” | grep -v “^$”
[[registry]]
prefix = “docker.io”
location = “docker.io”
[[registry]]
prefix = “quay.io”
location = “quay.io”
[[registry]]
prefix = “registry.access.redhat.com”
location = “registry.access.redhat.com”
[[registry.mirror]]
prefix = “docker.io”
location = “registry.cn-hangzhou.aliyuncs.com”
4.4 启动Podman服务
# systemctl start podman
# systemctl enable podman
# 验证服务状态
# systemctl status podman
● podman.service – Podman API Service
Loaded: loaded (/usr/lib/systemd/system/podman.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-04-05 10:00:00 CST; 1min ago
Docs: man:podman-system-service(1)
Main PID: 12345 (podman)
Tasks: 10
Memory: 100.0M
CGroup: /system.slice/podman.service
└─12345 /usr/bin/podman system service
# 验证Podman socket
# ls -la /run/podman/podman.sock
.srw-rw—- 1 root root 0 Apr 5 10:00 /run/podman/podman.sock
5. Podman配置优化
为了提高Podman的性能和稳定性,需要进行一些配置优化。
5.1 存储配置优化
# vi /etc/containers/storage.conf
# 存储配置
[storage]
driver = “overlay”
graphroot = “/var/lib/containers/storage”
runroot = “/run/containers/storage”
[storage.options]
overlay.mountopt = “nodev,metacopy=off”
overlay.size = “100GB”
# 验证配置
# cat /etc/containers/storage.conf | grep -v “^#” | grep -v “^$”
[storage]
driver = “overlay”
graphroot = “/var/lib/containers/storage”
runroot = “/run/containers/storage”
[storage.options]
overlay.mountopt = “nodev,metacopy=off”
overlay.size = “100GB”
5.2 网络配置优化
# podman network create fgedu-net –subnet 172.18.0.0/16 –gateway 172.18.0.1
# 查看网络
# podman network ls
NETWORK ID NAME DRIVER
1234567890ab podman bridge
9876543210ba fgedu-net bridge
# 配置网络参数
# vi /etc/containers/containers.conf
[network]
default_network = “fgedu-net”
network_backend = “netavark”
# 验证配置
# cat /etc/containers/containers.conf | grep -A 5 “network”
[network]
default_network = “fgedu-net”
network_backend = “netavark”
5.3 安全配置优化
# vi /etc/containers/containers.conf
[containers]
default_sysctls = [“net.ipv4.ip_forward=1”]
default_capabilities = []
default_ulimits = [“nofile=65536:65536”]
default_seccomp_profile = “/usr/share/containers/seccomp.json”
default_apparmor_profile = “”
# 配置SELinux
# vi /etc/containers/containers.conf
[containers]
label = “auto”
# 验证配置
# cat /etc/containers/containers.conf | grep -A 10 “containers”
[containers]
default_sysctls = [“net.ipv4.ip_forward=1”]
default_capabilities = []
default_ulimits = [“nofile=65536:65536”]
default_seccomp_profile = “/usr/share/containers/seccomp.json”
default_apparmor_profile = “”
label = “auto”
6. Podman容器管理
本节介绍Podman容器的基本管理操作。
6.1 拉取镜像
# podman pull ubuntu:22.04
# 拉取Nginx镜像
# podman pull nginx:latest
# 拉取MySQL镜像
# podman pull mysql:8.0
# 查看镜像
# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/ubuntu 22.04 1234567890ab 2 weeks ago 70MB
docker.io/library/nginx latest 9876543210ba 1 week ago 140MB
docker.io/library/mysql 8.0 abcdef123456 3 days ago 500MB
6.2 运行容器
# podman run -it –name ubuntu-test ubuntu:22.04 /bin/bash
# 运行Nginx容器
# podman run -d –name nginx-test -p 80:80 nginx:latest
# 运行MySQL容器
# podman run -d –name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysql123 mysql:8.0
# 查看运行中的容器
# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1234567890ab docker.io/library/nginx:latest nginx -g daemon off; 1 minute ago Up 1 minute ago 0.0.0.0:80->80/tcp nginx-test
9876543210ba docker.io/library/mysql:8.0 mysqld 2 minutes ago Up 2 minutes ago 0.0.0.0:3306->3306/tcp mysql-test
6.3 管理容器
# podman stop nginx-test
# 启动容器
# podman start nginx-test
# 重启容器
# podman restart nginx-test
# 删除容器
# podman rm nginx-test
# 查看所有容器
# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1234567890ab docker.io/library/nginx:latest nginx -g daemon off; 1 minute ago Exited (0) 30 seconds ago nginx-test
9876543210ba docker.io/library/mysql:8.0 mysqld 2 minutes ago Up 2 minutes ago 0.0.0.0:3306->3306/tcp mysql-test
6.4 容器监控
# podman inspect nginx-test
# 查看容器日志
# podman logs nginx-test
# 查看容器资源使用情况
# podman stats nginx-test
# 进入容器
# podman exec -it nginx-test /bin/bash
# 查看容器内进程
# podman top nginx-test
7. Podman网络配置
Podman支持多种网络模式,包括bridge、host、none和pod。
7.1 网络模式介绍
# podman network ls
NETWORK ID NAME DRIVER
1234567890ab podman bridge
9876543210ba fgedu-net bridge
# 查看网络详细信息
# podman network inspect podman
[
{
“name”: “podman”,
“id”: “1234567890ab”,
“driver”: “bridge”,
“network_interface”: “podman0”,
“created”: “2024-04-05T10:00:00Z”,
“subnets”: [
{
“subnet”: “10.88.0.0/16”,
“gateway”: “10.88.0.1”
}
],
“ipv6_enabled”: false,
“internal”: false,
“dns_enabled”: true,
“labels”: {}
}
]
7.2 自定义网络
# podman network create –driver bridge –subnet 172.19.0.0/16 –gateway 172.19.0.1 fgedu-net2
# 查看网络
# podman network ls
NETWORK ID NAME DRIVER
1234567890ab podman bridge
9876543210ba fgedu-net bridge
abcdef123456 fgedu-net2 bridge
# 使用自定义网络运行容器
# podman run -d –name nginx-test2 –network fgedu-net2 -p 8080:80 nginx:latest
# 验证网络配置
# podman inspect nginx-test2 | grep -A 20 “NetworkMode”
7.3 网络故障排查
# ip addr show podman0
# 检查网络路由
# ip route show
# 测试容器网络连接
# podman exec -it nginx-test ping -c 4 www.baidu.com
# 检查防火墙规则
# firewall-cmd –list-all
# 允许容器网络流量
# firewall-cmd –add-masquerade –permanent
# firewall-cmd –reload
8. Podman存储配置
Podman使用存储驱动来管理容器的文件系统,支持多种存储驱动。
8.1 存储驱动配置
# podman info | grep -A 10 “storage”
# 编辑存储配置
# vi /etc/containers/storage.conf
[storage]
driver = “overlay”
graphroot = “/var/lib/containers/storage”
runroot = “/run/containers/storage”
[storage.options]
overlay.mountopt = “nodev,metacopy=off”
# 验证存储配置
# podman info | grep -A 20 “storage”
8.2 卷管理
# podman volume create fgedu-volume
# 查看卷
# podman volume ls
DRIVER VOLUME NAME
local fgedu-volume
# 使用卷运行容器
# podman run -d –name nginx-test -v fgedu-volume:/usr/share/nginx/html -p 80:80 nginx:latest
# 查看卷详细信息
# podman volume inspect fgedu-volume
# 删除卷
# podman volume rm fgedu-volume
8.3 存储优化
# podman image prune -f
# 清理未使用的容器
# podman container prune -f
# 清理未使用的卷
# podman volume prune -f
# 清理所有未使用的资源
# podman system prune -f
# 查看存储使用情况
# podman system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 3 2 710MB 70MB (9%)
Containers 2 2 0B 0B
Local Volumes 1 1 100MB 0B
Build Cache 0 0 0B 0B
9. Podman性能优化
在生产环境中,需要对Podman进行性能优化以提高容器运行效率。from:www.itpux.com
9.1 内存优化
# podman run -d –name nginx-test –memory 512m –memory-swap 1g -p 80:80 nginx:latest
# 配置容器CPU限制
# podman run -d –name nginx-test –cpus 0.5 -p 80:80 nginx:latest
# 配置容器IO限制
# podman run -d –name nginx-test –blkio-weight 500 -p 80:80 nginx:latest
# 验证资源限制
# podman inspect nginx-test | grep -A 10 “Resources”
9.2 镜像优化
# podman pull alpine:latest
# 构建优化的Dockerfile
# vi Dockerfile
FROM alpine:latest
RUN apk add –no-cache nginx
EXPOSE 80
CMD [“nginx”, “-g”, “daemon off;”]
# 构建镜像
# podman build -t fgedu/nginx:alpine .
# 查看镜像大小
# podman images | grep fgedu/nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/fgedu/nginx alpine 1234567890ab 1 minute ago 15MB
9.3 网络优化
# podman run -d –name nginx-test –network host nginx:latest
# 配置网络MTU
# podman network create –driver bridge –subnet 172.20.0.0/16 –gateway 172.20.0.1 –opt mtu=1450 fgedu-net3
# 使用自定义网络运行容器
# podman run -d –name nginx-test –network fgedu-net3 -p 80:80 nginx:latest
# 测试网络性能
# podman exec -it nginx-test iperf3 -c 192.168.1.51
9.4 存储优化
# vi /etc/containers/storage.conf
[storage]
driver = “overlay”
[storage.options]
overlay.mountopt = “nodev,metacopy=off”
# 配置存储配额
# vi /etc/containers/storage.conf
[storage.options]
overlay.size = “100GB”
# 清理存储
# podman system prune -f –all
# 查看存储使用情况
# podman system df
10. Podman升级迁移
本节介绍Podman的版本升级和数据迁移方法。
10.1 Podman版本升级
# cp -r /etc/containers /backup/containers_$(date +%Y%m%d)
# 备份容器和镜像
# podman save -o /backup/images_$(date +%Y%m%d).tar $(podman images -q)
# 停止所有容器
# podman stop $(podman ps -q)
# 升级Podman
# yum update -y podman
# 验证升级
# podman –version
podman version 4.9.0
# 启动容器
# podman start $(podman ps -a -q)
# 验证容器状态
# podman ps
10.2 Podman配置迁移
# cp -r /etc/containers /backup/containers_export
# 导出容器和镜像
# podman save -o /backup/images_export.tar $(podman images -q)
# podman export -o /backup/containers_export.tar $(podman ps -a -q)
# 在新服务器上导入配置
# cp -r /backup/containers_export /etc/containers
# 导入镜像
# podman load -i /backup/images_export.tar
# 导入容器
# podman import /backup/containers_export.tar
# 启动容器
# podman start $(podman ps -a -q)
# 验证配置
# podman info
11. Podman备份恢复
本节介绍Podman的备份和恢复方法。
11.1 Podman容器备份
# podman export -o /backup/nginx-container_$(date +%Y%m%d).tar nginx-test
# 备份容器卷
# podman volume export -o /backup/nginx-volume_$(date +%Y%m%d).tar fgedu-volume
# 备份所有容器
# for container in $(podman ps -a -q); do podman export -o /backup/container_${container}_$(date +%Y%m%d).tar $container; done
# 备份所有镜像
# podman save -o /backup/images_$(date +%Y%m%d).tar $(podman images -q)
11.2 Podman容器恢复
# podman load -i /backup/images_20240405.tar
# 恢复容器
# podman import /backup/nginx-container_20240405.tar
# 恢复容器卷
# podman volume create fgedu-volume
# podman volume import fgedu-volume /backup/nginx-volume_20240405.tar
# 启动容器
# podman run -d –name nginx-test -v fgedu-volume:/usr/share/nginx/html -p 80:80 nginx:latest
# 验证恢复
# podman ps
11.3 Podman监控脚本
# vi /data/podman/scripts/podman_monitor.sh
#!/bin/bash
LOG_FILE=”/var/log/podman_monitor.log”
ALERT_EMAIL=”admin@fgedu.net.cn”
check_podman_status() {
echo “$(date): Checking podman status…” >> $LOG_FILE
status=$(systemctl status podman | grep -o “Active: active”)
if [ “$status” = “Active: active” ]; then
echo “$(date): Podman status: OK” >> $LOG_FILE
else
echo “$(date): Podman status: FAILED” >> $LOG_FILE
echo “Podman service failed” | mail -s “Podman Alert” $ALERT_EMAIL
fi
}
check_container_status() {
echo “$(date): Checking container status…” >> $LOG_FILE
containers=$(podman ps -q | wc -l)
echo “$(date): Running containers: $containers” >> $LOG_FILE
if [ “$containers” -eq 0 ]; then
echo “$(date): No containers running” >> $LOG_FILE
echo “No containers running” | mail -s “Podman Alert” $ALERT_EMAIL
fi
}
check_storage_usage() {
echo “$(date): Checking storage usage…” >> $LOG_FILE
usage=$(podman system df | grep -A 1 “Images” | tail -n 1 | awk ‘{print $4}’)
echo “$(date): Storage usage: $usage” >> $LOG_FILE
if [[ “$usage” == *”90%”* ]]; then
echo “$(date): Storage usage too high: $usage” >> $LOG_FILE
echo “Storage usage too high: $usage” | mail -s “Podman Alert” $ALERT_EMAIL
fi
}
main() {
check_podman_status
check_container_status
check_storage_usage
}
main
# 添加执行权限
# chmod +x /data/podman/scripts/podman_monitor.sh
# 添加定时任务
# crontab -e
*/15 * * * * /data/podman/scripts/podman_monitor.sh
通过以上步骤,Podman安装配置、性能优化、升级迁移、备份恢复等内容已全部完成。Podman作为无守护进程的容器引擎,能够高效地管理和运行容器,是容器化部署的重要工具之一。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
