如何在Podman的rootful与rootless模式间切换时保留镜像和Pod?
Podman Rootless与Rootful模式间的Pod迁移方案
Rootless和Rootful模式是Podman完全隔离的运行环境,两者的Pod、容器、镜像等资源不共享,直接切换模式会看不到另一方的资源,需要通过导出-导入的方式完成迁移,步骤如下:
一、在Rootless模式下准备迁移资源
- 停止目标Pod
podman pod stop <你的Pod名称或ID> - 生成Pod的Kubernetes配置文件(用于后续重建Pod)
podman generate kube <你的Pod名称或ID> > pod-config.yaml - 处理自定义镜像(如果Pod使用的是本地构建的非公共镜像)
- 将容器提交为自定义镜像:
podman commit <容器ID> <自定义镜像名称> - 导出镜像为归档文件:
podman save <自定义镜像名称> -o custom-image.tar
- 将容器提交为自定义镜像:
- 迁移数据卷(如果Pod使用了数据卷存储数据)
- 导出数据卷内容:
podman volume export <卷名称> -o volume-data.tar
- 导出数据卷内容:
二、切换到Rootful模式并导入资源
- 切换模式并重启Podman Machine
podman machine set --rootful=true podman machine restart - 导入自定义镜像(如果有)
podman load -i custom-image.tar - 导入数据卷(如果有)
podman volume create <卷名称> podman volume import <卷名称> volume-data.tar - 重建Pod
podman play kube pod-config.yaml - 验证Pod状态
podman pod ps
完成以上步骤后,你的Pod就能在Rootful模式下正常运行了。如果之后需要切回Rootless模式,按同样的反向流程操作即可。
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

