是的,一台服务器上是可以安装两个甚至多个版本的 Docker 的,但需要注意一些方法和限制。
✅ 一、为什么想装两个版本的 Docker?
常见的原因包括:
- 测试不同版本的功能
- 某些项目依赖旧版本 Docker,而新项目需要新版本
- 调试或排查版本兼容性问题
✅ 二、安装多个 Docker 版本的方法
方法 1:使用静态二进制文件运行不同版本的 Docker(推荐)
这是最灵活的方式。你可以将不同版本的 Docker 以二进制方式部署在不同的路径下,比如:
步骤如下:
-
下载不同版本的 Docker 静态二进制包
官网地址:
https://download.docker.com/linux/static/stable/x86_64/示例下载命令:
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.0.tgz -
解压到不同目录
tar -xvf docker-20.10.9.tgz -C /opt/docker-20.10.9/ tar -xvf docker-24.0.0.tgz -C /opt/docker-24.0.0/ -
创建软链接切换使用(可选)
ln -s /opt/docker-20.10.9/docker /usr/local/bin/docker-20 ln -s /opt/docker-24.0.0/docker /usr/local/bin/docker-24 -
使用时指定命令
docker-20 info docker-24 info
⚠️ 注意:这种方式不会注册为系统服务(systemd),只能手动启动
docker daemon,适用于测试或开发环境。
方法 2:使用容器运行另一个版本的 Docker(Docker in Docker)
可以使用 Docker 官方镜像来运行另一个版本的 Docker:
docker run --privileged --name some-docker -d docker:20.10-dind
然后进入容器内部操作另一个版本的 Docker:
docker exec -it some-docker sh
这种方式适合 CI/CD 或隔离环境测试,但性能和功能有一定限制。
方法 3:多用户或 chroot/jail 环境隔离(高级用法)
通过 Linux 的命名空间(如 LXC/LXD)、chroot 或 jail 来隔离不同的 Docker 实例。这种做法复杂度高,一般用于特殊场景。
❌ 三、不能直接并行运行多个 Docker Daemon
你不能同时运行两个默认配置的 Docker daemon,因为它们会冲突:
- 默认都监听
/var/run/docker.sock - 默认端口都是
2375和2376 - 数据目录冲突(如
/var/lib/docker)
所以如果你要运行多个 Docker daemon,必须分别指定不同的:
dockerd
--host=unix:///tmp/docker2.sock
--data-root=/var/lib/docker2
--pidfile=/var/run/docker2.pid
--pid=host
✅ 四、总结建议
| 场景 | 推荐方法 |
|---|---|
| 开发测试多个版本 | 使用静态二进制文件 + 别名(如 docker-20, docker-24) |
| CI/CD 环境中测试 | 使用 Docker-in-Docker(DinD)容器 |
| 多个生产级实例 | 修改配置参数,运行多个独立的 Docker daemon |
如果你告诉我你的具体需求(比如你想做什么?测试?迁移?还是兼容老项目?),我可以给你定制一个更具体的方案 ?
CDNK博客