ubuntu中可以部署多个docker?

云计算

是的,在 Ubuntu 中可以部署并运行多个 Docker 实例,但需要明确“多个 Docker”的具体含义。通常有以下几种理解方式:


✅ 情况一:运行多个 Docker 容器(最常见)

这是最常见的使用场景:在一台 Ubuntu 机器上安装一个 Docker 引擎(Docker Engine),然后通过它运行多个容器

# 示例:运行多个容器
docker run -d --name web1 nginx
docker run -d --name web2 nginx
docker run -d --name db mysql

✅ 这是完全支持且非常常见的做法。Docker 的设计初衷就是在一个宿主机上管理多个容器。


✅ 情况二:运行多个独立的 Docker Daemon(多个 Docker 服务实例)

这表示你想在同一台 Ubuntu 主机上运行多个 Docker 守护进程(daemon),每个使用不同的配置、端口、数据目录等。

⚠️ 默认情况下,一台机器只运行一个 Docker daemon(监听 unix:///var/run/docker.sock),但你可以通过以下方式启动第二个甚至更多的 Docker 实例:

方法:自定义 Docker Daemon 配置

  1. 创建新的配置目录和 socket

    sudo mkdir /etc/docker2
    sudo mkdir /var/lib/docker2
  2. 编写新的 systemd 服务文件(如 docker2.service)

    sudo cp /lib/systemd/system/docker.service /etc/systemd/system/docker2.service
  3. 编辑 docker2.service,修改关键参数:

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd 
     --host=unix:///var/run/docker2.sock 
     --data-root=/var/lib/docker2 
     --pidfile=/var/run/docker2.pid 
     --pidfile=/run/docker2.pid 
     --config-file=/etc/docker2/daemon.json
    ExecReload=/bin/kill -s HUP $MAINPID
    TimeoutSec=0
    RestartSec=0
    StartLimitBurst=3
    StartLimitInterval=60s
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    TasksMax=infinity
    Delegate=yes
    KillMode=process
  4. 重载 systemd 并启动新服务

    sudo systemctl daemon-reload
    sudo systemctl start docker2
    sudo systemctl enable docker2
  5. 使用时指定 DOCKER_HOST

    export DOCKER_HOST=unix:///var/run/docker2.sock
    docker ps  # 现在操作的是第二个 Docker 实例

✅ 这样你就有了两个独立的 Docker 实例,彼此隔离。

⚠️ 注意:这种方式复杂,一般用于测试、开发隔离或安全沙箱场景,生产中不常见。


❌ 情况三:安装多个 Docker 软件包?

你不能同时安装多个不同版本的 Docker 包(如 docker-cedocker.io)而不出冲突。你应该选择其中一个安装。

推荐使用官方 Docker CE 版本:

# 卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc

# 安装 Docker CE(官方推荐)
curl -fsSL https://get.docker.com | sh

总结

目标 是否支持 说明
运行多个容器 ✅ 是 标准用法,强烈支持
多个 Docker daemon 实例 ✅ 可以 需手动配置,适用于高级场景
同时安装多个 Docker 包 ❌ 不推荐 会导致冲突

建议

  • 对于绝大多数用户:安装一个 Docker,运行多个容器即可。
  • 若需隔离环境,可考虑使用:
    • Docker Compose(管理多容器应用)
    • Podman(无守护进程,支持多用户)
    • 虚拟机或命名空间隔离

如有具体需求(如多租户、安全隔离),欢迎进一步说明,我可以给出更详细的方案。

未经允许不得转载:CLOUD云枢 » ubuntu中可以部署多个docker?