Podman 镜像导入与启动操作日志(功能补全示例)

社区话题 Linux/macOS 与自动化运维 Podman 镜像导入与启动操作日志(功能补全示例)

标签: ,

正在查看 1 条回复
  • 作者
    帖子
    • #1287

      追光
      管理员

      允许任何来源(policy.json) + 导入本地镜像 + 启动容器——整理成一个完整的操作日志/步骤记录,并说明这是为了补足镜像导入功能不全的问题。下面我帮你整理成一份清晰的日志形式:

      环境:AMH 面板 + Podman
      问题:Podman 默认缺少 /etc/containers/policy.json,导致无法导入离线镜像。


      1️⃣ 创建允许任何来源的 policy.json

      mkdir -p /etc/containers
      cat > /etc/containers/policy.json <<'EOF'
      {
      "default": [
      {
      "type": "insecureAcceptAnything"
      }
      ]
      }
      EOF

      说明:
      • 这步是为了解决 podman load 导入镜像时报错 no such file or directory 或“payload does not match”。
      • 允许 Podman 接受任何镜像来源,包括离线 .tar 文件。


      2️⃣ 导入本地镜像

      podman load -i /home/wwwroot/lnmp/domain/images/llm-arm-jisongbin.tar

      输出示例:

      Getting image source signatures
      Copying blob …

      Writing manifest to image destination
      Loaded image: docker.io/library/llm-arm-jisongbin:latest

      说明:
      • 镜像成功导入后,可以通过 podman images 查看。
      • 这一步解决了功能不全的情况:以前无法导入离线镜像,现在可以。


      3️⃣ 查看已导入镜像

      podman images

      示例输出:

      REPOSITORY TAG IMAGE ID CREATED SIZE
      docker.io/library/redis latest 5b7e962f53cb 162 MB
      docker.io/library/llm-arm-jisongbin latest d6c71337b27a 3.01 GB


      4️⃣ 启动容器示例

      Redis 容器

      podman run -d \
      --name redis \
      -p 6379:6379 \
      docker.io/library/redis:latest

      LLM 容器

      podman run -d \
      --name llm-container \
      -p 3001:3001 \
      -v /home/wwwroot/lnmp/domain/data:/app/data \
      docker.io/library/llm-arm-jisongbin:latest

      说明:
      • -d:后台运行
      • –name:容器名称,必须唯一
      • -p:端口映射,宿主机端口 → 容器端口
      • -v:挂载宿主机目录,避免容器写入覆盖镜像层


      5️⃣ 启动第二个 LLM 容器(基于同一镜像)

      podman run -d \
      --name llm-container-2 \
      -p 3002:3001 \
      -v /home/wwwroot/lnmp/domain/data2:/app/data \
      docker.io/library/llm-arm-jisongbin:latest

      说明:
      • 为了避免端口冲突,宿主机端口需不同
      • 挂载不同数据目录,避免容器互相覆盖数据


      6️⃣ 总结
      • 问题:Podman 默认无法导入离线镜像,缺少 policy.json。
      • 解决方案:创建最小化 policy.json → 导入镜像 → 启动容器

      结果:
      1. 离线镜像成功导入
      2. 多个容器可基于同一镜像同时运行
      3. 容器可通过端口映射访问,支持 Nginx 反代

    • #1290

      追光
      管理员

      Podman = 更安全、无守护进程、适合生产环境
      Docker = 更成熟、社区丰富、易用性高
      对于单机管理面板使用,两者都够用,主要看你对安全和生态的偏好。

      特性AMH (Podman)宝塔 (Docker)
      架构无守护进程,支持 rootless守护进程模式,需要 root 或 docker 组
      安全性高(rootless 运行更安全)中(守护进程集中管理)
      生态兼容 Docker 镜像,社区较小生态丰富,Docker Hub 镜像多
      面板集成AMH 原生支持 Podman宝塔原生支持 Docker
      离线镜像需要 policy.json直接 docker save/load
      集群 / 大规模部署需结合 Kubernetes / CRI-O支持 Docker Compose / Swarm / Kubernetes
      适用场景安全性高、生产环境快速搭建、社区支持丰富
正在查看 1 条回复
  • 在下方一键注册,登录后就可以回复啦。