You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Rootless Podman识别并使用现有Docker容器?

在Rootless Podman中复用Docker的镜像与容器

Docker和Rootless Podman的存储系统相互独立,默认情况下Podman无法识别Docker的镜像和容器。以下是本地测试场景下的几种解决方法:

迁移Docker镜像到Rootless Podman

方法1:导出导入法(简单通用)

  1. 用Docker导出目标镜像:
    sudo docker save -o my-image.tar <镜像名:标签>
    
  2. 切换到普通用户(Rootless Podman必须以非root身份运行),导入镜像到Podman:
    podman load -i my-image.tar
    
  3. 验证导入结果:
    podman images
    

方法2:用Skopeo直接复制(更高效)

Skopeo可在不同容器存储后端直接复制镜像,无需导出成文件:

  1. 安装Skopeo(未安装时):
    sudo apt install skopeo
    
  2. 复制Docker镜像到Rootless Podman的存储:
    sudo skopeo copy docker-daemon:<镜像名:标签> containers-storage:localhost/<镜像名:标签>
    
  3. 给复制后的镜像赋予当前用户权限:
    sudo chown -R $USER:$USER ~/.local/share/containers/storage
    

复用Docker容器(推荐重新创建)

容器迁移比镜像复杂,因Docker和Podman的配置、网络模型存在差异,更推荐基于迁移后的镜像重新创建Podman容器:

  1. 查看Docker容器的运行参数:
    sudo docker inspect <容器名/容器ID>
    
  2. 从输出中提取关键参数(如端口映射-p、挂载卷-v、启动命令、环境变量-e等),用Podman重新创建:
    podman run -d --name <新容器名> -p 8080:80 -v /host/path:/container/path <镜像名:标签> <启动命令>
    

若需直接迁移容器文件系统:

  1. 导出Docker容器的文件系统:
    sudo docker export -o container-fs.tar <容器ID>
    
  2. 将导出的文件系统导入为Podman镜像:
    podman import container-fs.tar <新镜像名:test>
    
  3. 基于新镜像创建Podman容器:
    podman run -d --name <新容器名> <新镜像名:test>
    

直接共享Docker存储(不推荐,仅测试用)

若不想迁移,可让Rootless Podman直接使用Docker的存储目录,但可能导致两者互相干扰:

  1. 编辑Podman的存储配置文件:
    nano ~/.config/containers/storage.conf
    
  2. 修改以下两行配置(替换为Docker的存储路径):
    runroot = "/run/docker"
    graphroot = "/var/lib/docker"
    
  3. 给当前用户赋予Docker存储目录的权限:
    sudo chown -R $USER:$USER /var/lib/docker /run/docker
    
  4. 重启Podman服务:
    systemctl --user restart podman
    

内容的提问来源于stack exchange,提问作者TimSO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:32:54