Docker部署Podman:Docker环境里部署

本文面向已经在使用 Docker 的用户,教你如何在同一条服务器上额外安装 Podman,并让两者互不干扰地工作。
全程命令可复制执行,零基础也行。

准备工作:查看当前 Docker 版本与系统环境

先确认你已经有 Docker,并且系统是 CentOS 7+、Ubuntu 18.04+ 或主流 Linux 发行版。
打开终端执行:

docker --version
cat /etc/os-release

记录下系统版本和 Docker 版本,后面安装 Podman 时需要根据系统选择对应源。
如果 Docker 正在运行生产容器,建议先备份数据或选择业务低峰期操作。

安装 Podman 并让它与 Docker 和平共处

Podman 的设计目标就是兼容 Docker CLI,大部分 docker 命令可以直接换成 podman
但默认安装后两者可能争抢容器网络端口或镜像存储目录,这里提供一套稳妥的安装方法。

1. 安装 Podman

根据你的系统使用包管理器安装。

  • CentOS / RHEL / Rocky Linux
  sudo dnf install -y podman
  • Ubuntu / Debian
  sudo apt update
  sudo apt install -y podman

安装完成后检查版本:

podman --version

如果提示 podman: command not found,说明安装失败,需要先添加官方源(Ubuntu 可以用 sudo apt install podman 通常就行)。

2. 配置镜像存储路径不冲突

Docker 默认把镜像放在 /var/lib/docker,Podman 默认放在 /var/lib/containers
一般情况下它们不会冲突,但为了保险,确认一下:

podman info | grep -i store

如果输出显示路径不是 /var/lib/containers,建议重置为默认值。

3. 避免端口冲突:让 Podman 使用独立的容器网络

Docker 默认创建 docker0 桥接网络,Podman 有自己的 cni-podman0
如果要同时运行需要映射相同端口的容器(例如两个 Nginx 都占 80),需要手动分配不同主机端口,或者让 Podman 使用 host 网络模式。
普通用户暂时不要改动,直接正常使用即可。

避坑指南:高频问题与解决方案

问题 1:podman pull 报错 short-name resolution

这是 Podman 默认需要配置容器注册表。
执行:

sudo vim /etc/containers/registries.conf

找到 unqualified-search-registries 这一行,确保包含 ["docker.io"]
如果没有,加上。
保存后重新拉取。

问题 2:podman run --rm -p 80:80 nginx 提示端口被占

说明 Docker 已经占了 80 端口。
先用 docker ps 检查并停掉占用端口的容器,或者让 Podman 映射其他主机端口:

podman run --rm -p 8080:80 nginx

然后通过 http://服务器IP:8080 访问。

问题 3:Podman 创建用户需要 root 权限?

非 root 用户也可以跑 Podman,但需要开启用户命名空间。
安装后默认已经支持,如果报错 permission denied,检查当前用户是否在 subuidsubgid 文件中:

cat /etc/subuid

如果没有当前用户,
sudo usermod --add-subuids 100000-165536 --add-subgids 100000-165536 $USER 添加,
然后重新登录。

效果验证:用同一份 Dockerfile 同时测试两者

创建一个测试目录:

mkdir ~/test-podman && cd ~/test-podman

编写一个最简单的 Dockerfile:

FROM nginx:alpine
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

先用 Docker 构建并运行:

docker build -t test-nginx .
docker run -d --name docker-nginx -p 8081:80 test-nginx

访问 http://服务器IP:8081,看到 Nginx 首页。

然后用 Podman 构建并运行(注意命令基本相同):

podman build -t test-nginx-podman .
podman run -d --name podman-nginx -p 8082:80 test-nginx-podman

访问 http://服务器IP:8082,同样显示 Nginx 首页。

最后清理:

docker stop docker-nginx && docker rm docker-nginx
podman stop podman-nginx && podman rm podman-nginx

两台容器引擎都正常工作,没有冲突,说明 Docker 部署 Podman 成功。

结语

通过以上步骤,你在已有 Docker 的环境里成功部署并配置了 Podman,两者可同时拉取镜像、运行容器,互不干扰。
建议日常初学者先使用 Docker,等熟悉后再切换 Podman 体验无守护进程的优势。
如果遇到启动报错,优先检查镜像来源和端口占用。

分享到:
上一篇
Linux服务器服务自启动设置:一学就会的实操指南
下一篇
服务器AI服务器配置推荐:AI服务器配置推荐
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意