Podman安装与使用
安装与换源
安装
sudo apt update
sudo apt install -y podman
podman --version
配置国内源:
创建/etc/containers/registries.conf.d/514-podman-mirror.conf,添加以下内容:
unqualified-search-registries = ["docker.io"]
[[registry]]
location = "docker.io"
[[registry.mirror]]
location = "docker.m.daocloud.io"
[[registry.mirror]]
location = "docker.1ms.run"
[[registry.mirror]]
location = "hub.rat.dev"
[[registry.mirror]]
location = "docker.xuanyuan.me"
[[registry.mirror]]
location = "docker.1panel.live"
验证:
输入podman info --format='{{.Registries}}',应该输出:
map[docker.io:{docker.io {docker.io false } [{docker.m.daocloud.io false } {docker.1ms.run false } {hub.rat.dev false } {docker.xuanyuan.me false } {docker.1panel.live false }] false false} search:[docker.io]]
再尝试拉取podman pull docker.io/library/alpine:latest,会发现原本速度慢或连不上的情况变为高速下载
Pod支持
Pod的概念:
Pod 是容器的“逻辑主机”:无论是 Podman 还是 K8s,Pod 都代表一组共享网络命名空间、IPC 命名空间和存储卷的容器。
多容器协作单元:一个 Pod 可以包含主应用容器 + 辅助容器(如日志收集器、监控代理等),它们紧密耦合、共生命周期。
例如:一个 Web 应用容器 + 一个 Fluentd 日志 sidecar 容器,共享同一个 IP 和 volume。
典型用法
# 创建一个 Pod
podman pod create --name myapp-pod -p 8080:80
# 查看所有Pod
podman pod list
# 在该 Pod 中运行 Nginx 容器(与docker不同的地方就在于多了指定Pod名的参数`--pod myapp-pod`)
podman run -d --pod myapp-pod --name nginx nginx
# 在同一 Pod 中运行日志 sidecar(共享同一网络`myapp-pod`)
podman run -d --pod myapp-pod --name logger alpine tail -f /dev/null
# 查看 Pod 内容器共享 IP(Pod的网络是宿主机内部的一个子网,跟宿主机是桥接的关系)
podman pod inspect myapp-pod
# 查看所有容器(包含Podname的所有容器,除了刚刚创建的,还会有它自己创建的容器,是Pod的管理员)
podman ps --pod
# 停止Pod内所有容器运行
podman pod stop myapp-pod
# 启动Pod内所有容器
podman pod start myapp-pod
# 导出兼容K8s的Pod配置文件,K8s也能用
podman generate kube myapp-pod>myapp-pod.yaml
# 删除Pod
podman pod rm -f myapp-pod
# 利用Pod配置文件创建Pod(很像docker compose,但区别在于docker compose的多个容器是不同IP,podman的Pod是同一个IP)
podman play kube myapp-pod.yaml
设置容器/Pod开机自启
# 生成systemd的服务配置文件,name参数填要自启的容器名或Pod名
podman generate systemd --name myapp-pod --new --files
# 新建文件夹并复制刚刚生成的systemd服务配置文件(放到systemd扫描的路径之一)
mkdir -p ~/.config/systemd/user/
cp pod-myapp-pod.service container-*.service ~/.config/systemd/user/
# 重载systemd(让systemd发现这个服务)
systemctl --user daemon-reload
# 设置服务开机自启生效
systemctl --user enable --now pod-myapp-pod.service
# 把当前用户配置成黏连模式
sudo loginctl enable-linger $(whoami)

浙公网安备 33010602011771号