概述
Docker 越来越重,而且必须用 root 权限运行,这对安全性和资源占用都是个问题。Podman 是一个无守护进程的容器引擎,支持完全无 root 运行,兼容 Docker 镜像,命令也几乎一样。很多 AI 工具现在都支持 Podman 部署。
这篇教程带你从零在 Ubuntu/Debian VPS 上装好 Podman,跑通一个 Nginx 容器,让你体验不用 sudo 的容器生活。
准备工作
你需要以下条件:
- 一台 Linux VPS(Ubuntu 22.04+ 或 Debian 12+)
- SSH 登录权限
- 至少 2GB 内存和 10GB 磁盘空间
- 普通用户账户(不要直接用 root)
- 约 50MB 磁盘空间用于安装 Podman
步骤
第一步:安装 Podman
Ubuntu 22.04 及更高版本自带 Podman 3.x,Debian 12 自带 Podman 4.x。直接装就行:
sudo apt update
sudo apt install -y podman
如果你用的 Ubuntu 20.04 或较旧版本,需要先加 PPA:
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:podman/stable
sudo apt update
sudo apt install -y podman
安装完成后检查版本:
podman --version
看到类似 podman version 4.x.x 的输出就说明装好了。
第二步:配置无根容器
Podman 默认就是无根的,但需要做一些底层配置才能正常工作:
# 设置用户存储路径
echo "storage-driver = \"overlay\"" >> ~/.config/containers/storage.conf
# 创建必要的目录
mkdir -p ~/.local/share/containers
接下来配置 fuse-overlayfs(无根容器需要它来模拟 overlay 文件系统):
sudo apt install -y fuse-overlayfs
验证配置是否生效:
podman info | grep graphDriverName
输出应该是 graphDriverName: overlay。
第三步:拉取第一个镜像
用 Podman 拉取镜像的命令和 Docker 一模一样:
podman pull docker.io/library/nginx:alpine
拉取完成后看看本地有哪些镜像:
podman images
你会看到一个 nginx:alpine 的镜像,体积很小,只有十几 MB。
第四步:运行容器
启动一个 Nginx 容器,把宿主机的 8080 端口映射到容器的 80 端口:
podman run -d --name web-server -p 8080:80 nginx:alpine
参数说明:
-d:后台运行--name:给容器起个名字-p:端口映射,格式是宿主机端口:容器端口
查看运行中的容器:
podman ps
第五步:测试容器是否正常工作
用 curl 访问本地 8080 端口:
curl http://localhost:8080
如果看到 Nginx 的欢迎页面 HTML,说明容器跑起来了。你也可以在浏览器里打开 http://你的IP:8080 查看。
第六步:常用管理命令
Podman 的命令和 Docker 高度兼容:
# 查看容器日志
podman logs web-server
# 进入容器内部
podman exec -it web-server /bin/sh
# 停止容器
podman stop web-server
# 启动容器
podman start web-server
# 删除容器
podman rm -f web-server
# 删除镜像
podman rmi nginx:alpine
还有一个很实用的功能——把 Podman 容器转换成 systemd 服务,这样开机自动启动:
# 生成 systemd 服务文件
podman generate systemd --new --files --name web-server
# 复制到用户服务目录
cp container-web-server.service ~/.config/systemd/user/
# 启用并启动服务
systemctl --user enable container-web-server.service
systemctl --user start container-web-server.service
以后容器就会随系统自动启动了,不用手动管理。
验证
完成以上步骤后,跑一遍完整检查:
# 1. 检查 Podman 版本
podman --version
# 2. 检查存储驱动
podman info | grep graphDriverName
# 3. 检查运行中的容器
podman ps
# 4. 检查本地镜像
podman images
# 5. 测试容器可访问性
curl -s -o /dev/null -w "%{http_code}" http://localhost:8080
最后一条命令应该输出 200,表示 Nginx 容器正常响应 HTTP 请求。
常见问题
问:Podman 和 Docker 能同时装吗?
可以。它们互不冲突。Podman 不需要守护进程,Docker 需要。两个可以共存,命令也几乎一样。
问:podman run 报错 “rootless” 怎么办?
通常是 fuse-overlayfs 没装好。检查一下:
which fuse-overlayfs
fuse-overlayfs --version
如果没有安装,执行 sudo apt install -y fuse-overlayfs。
问:Podman 支持 Compose 吗?
支持。Podman 4.0+ 内置了 compose 子命令:
podman compose up -d
用法和 docker compose 一样。
问:怎么把 Docker 命令换成 Podman?
最简单的方式是建个别名:
echo "alias docker=podman" >> ~/.bashrc
source ~/.bashrc
这样你敲 docker run 实际执行的是 podman run,无缝切换。
问:Podman 适合生产环境吗?
完全可以。Red Hat 全家桶都在用 Podman。很多 AI 工具部署场景下,Podman 比 Docker 更安全,因为不需要 root 权限。
Podman 是目前最轻量的容器运行时之一。不用装守护进程、不用 root 权限、和 Docker 命令兼容,换过来只用一分钟。试试看,说不定你会爱上这种无根容器的方式。
你的 VPS 上跑过哪些容器?用什么工具管理的?来聊聊。