是否可以在同一台机器上启动多个docker守护程序

时间:2015-09-01 14:24:44

标签: docker

如果有可能,您将如何配置每个守护程序 - 图形位置,图像位置等?

3 个答案:

答案 0 :(得分:34)

是的,即使没有Docker Machine,也可以在一台主机上运行两个Docker守护进程。从Docker 18.09.0-ce开始,如果两个守护进程使用默认值,则以下dockerd标志可能会导致冲突:

  -b, --bridge string       Attach containers to a network bridge
      --exec-root string    Root directory for execution state files (default "/var/run/docker")
      --data-root string    Root directory of persistent Docker state (default "/var/lib/docker")
  -H, --host list           Daemon socket(s) to connect to
  -p, --pidfile string      Path to use for daemon PID file (default "/var/run/docker.pid")
  • --bridge的默认值为docker0,如果您没有使用默认值,则必须手动创建和配置网桥(Docker不会为您创建/管理网桥) )。更多详情如下。

  • --exec-root是存储容器状态的位置(默认值:/var/run/docker)。

  • --data-root是存储图片的位置(默认值:/var/lib/docker)。

  • --host指定Docker守护程序将侦听客户端连接的位置。如果未指定,则默认为/var/run/docker.sock

  • --pidfile是存储守护进程的进程ID的位置(默认值:/var/run/docker.pid)。

因此,只要您的两个守护进程对这些标志使用不同的值,您就可以在同一主机上运行它们。示例脚本(包括网络设置):

#!/bin/sh
## name: altdocker.sh
set -e -x

: ${bridge=altdocker}
: ${base=$HOME/$bridge}

# Set up bridge network:
if ! ip link show $bridge > /dev/null 2>&1
then
   sudo ip link add name $bridge type bridge
   sudo ip addr add ${net:-"10.20.30.1/24"} dev $bridge
   sudo ip link set dev $bridge up
fi

sudo dockerd \
  --bridge=$bridge \
  --data-root=$base.data \
  --exec-root=$base.exec \
  --host=unix://$base.socket \
  --pidfile=$base.pid

使用示例:

## in one terminal
$ env net=10.9.8.7/24 /bin/sh altdocker.sh
# ... log output ...

## in another terminal
$ docker -H unix://$HOME/altdocker.socket run --rm -i -t alpine sh
/ # echo hereiam
hereiam

更新了从Docker 1.9.1到18.09.0-ce的更改,以防有人使用的是旧版本:

┌───────────────┬─────────────┐
│ 1.9.1         │ 18.09.0-ce  │
├───────────────┼─────────────┤
│ docker daemon │ dockerd     │
│ -g / --graph  │ --exec-root │
└───────────────┴─────────────┘

答案 1 :(得分:7)

好问题!可以在容器内启动Docker守护程序。在该容器中,您将能够启动更多容器。这样,您就可以在同一台主机上运行具有不同设置的docker守护程序。

结帐此项目:https://github.com/jpetazzo/dind。它提供了一个包含Docker本身的Docker镜像,就像你需要的那样。

答案 2 :(得分:-1)

是的,使用Docker Machine

可行

使用此功能,您可以创建多个docker守护程序,并根据需要在它们之间切换。