Skip to content
返回部署

使用 Podman 部署

无守护、无 root 容器引擎,兼容 Docker CLI。

容器进阶

为什么

Podman 无守护无 root — 无后台守护,容器以非 root 用户运行。CLI 兼容 Docker,支持 pod(如 K8s)。

Docker is used by 59% of professional developers per the Stack Overflow 2024 survey,Kubernetes 在生产中运行 60% 的容器化工作负载(CNCF 2024 调查)。容器编排通过声明式滚动发布将部署相关事故减少 35%。

何时使用

Linux 无 root 容器、无 Docker 守护 CI 和 K8s pod YAML 用 Podman。Mac/Windows 避免(用 VM)。

如何做

1. 安装 — Linux 包管理器 2. 运行 — podman run,同 docker run 3. 构建 — podman build,读 Dockerfile 4. Pod — podman pod create,分组容器 5. Compose — podman-compose(或 podman compose) 6. 无 root — 以你用户运行,无 sudo 7. 生成 — podman generate kube 生成 K8s YAML

示例

# 同 Docker 命令 podman run -d -p 3000:3000 myapp:latest podman build -t myapp . podman ps podman logs <container> # Podman pod — 分组容器 podman pod create --name mypod -p 8080:80 podman run -d --pod mypod nginx podman run -d --pod mypod redis # 从 pod 生成 K8s YAML podman generate kube mypod > mypod.yaml kubectl apply -f mypod.yaml # 无 root — 无需 sudo podman run -v $HOME/data:/data alpine # 挂载用户目录

常见问题

  • ⚠端口 < 1024 需 root — 无 root 不能绑 80/443,用 8080/8443 或 sysctl
  • ⚠无 Docker 守护 — 某些工具期望 docker socket,用 podman-docker shim
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓无 root 运行 — 更好安全,无 root 容器逃逸
  • ✓用 podman generate kube — 本地 pod 转 K8s 清单可移植
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答