一台服务器可以装两个版本的docker?

服务器

是的,一台服务器上是可以安装两个甚至多个版本的 Docker 的,但需要注意一些方法和限制。


✅ 一、为什么想装两个版本的 Docker?

常见的原因包括:

  • 测试不同版本的功能
  • 某些项目依赖旧版本 Docker,而新项目需要新版本
  • 调试或排查版本兼容性问题

✅ 二、安装多个 Docker 版本的方法

方法 1:使用静态二进制文件运行不同版本的 Docker(推荐)

这是最灵活的方式。你可以将不同版本的 Docker 以二进制方式部署在不同的路径下,比如:

步骤如下:

  1. 下载不同版本的 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
  2. 解压到不同目录

    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/
  3. 创建软链接切换使用(可选)

    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
  4. 使用时指定命令

    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
  • 默认端口都是 23752376
  • 数据目录冲突(如 /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博客 » 一台服务器可以装两个版本的docker?