是否可以在同一台计算机上启动多个docker守护进程

是否可以在同一台计算机上启动多个docker守护进程,docker,Docker,如果可能,您将如何配置每个守护进程-图形位置、图像位置等?好问题!可以在容器内启动Docker守护进程。在该容器中,您可以启动更多容器。这样,您就可以在同一台主机上运行具有不同设置的docker守护程序 签出此项目:。它提供一个包含Docker自身的Docker映像,正如您所需。是的,这可以通过使用 使用此功能,您可以创建多个docker守护进程,并根据需要在它们之间切换 是的,即使没有Docker机器,在一台主机上运行两个Docker守护进程也是完全可能的。从Docker 18.09.0-ce

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

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


签出此项目:。它提供一个包含Docker自身的Docker映像,正如您所需。

是的,这可以通过使用


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

是的,即使没有Docker机器,在一台主机上运行两个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

  • --数据根
    是存储图像的地方(默认值:
    /var/lib/docker

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

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

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

#/垃圾箱/垃圾箱
##名称:altdocker.sh
set-e-x
:${bridge=altdocker}
:${base=$HOME/$bridge}
#建立网桥网络:
如果!ip链接显示$bridge>/dev/null 2>&1
然后
sudo ip link add name$网桥类型网桥
sudo ip addr add${net:-“10.20.30.1/24”}dev$bridge
sudo ip链接设置dev$bridge up
fi
苏多码头\
--bridge=$bridge\
--数据根=$base.data\
--exec root=$base.exec\
--主机=unix://$base.socket\
--pidfile=$base.pid
用法示例:

一个终端中的
##
$env net=10.9.8.7/24/bin/sh altdocker.sh
# ... 日志输出。。。
##在另一个终端
$docker-H unix://$HOME/altdocker.socket运行--rm-i-t
/#回音如下
赫里亚姆

更新Docker 1.9.1至18.09.0-ce的更改,以防任何人使用非常旧的版本:

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

你到底要怎么做?您必须为您想要的每个docker引擎创建一个VM,对吗?可能是-1,因为:虽然docker machine管理远程机器和本地VM中的docker引擎,但它的用例是每个远程主机和VM都有一个docker引擎。这个问题特别要求在同一主机上运行多个Docker引擎实例,并且由于它特别要求配置某些属性,以便这些实例可以在同一主机/VM中共存,因此它没有要求多个VM,因此它没有要求Docker机器。这只是一个猜测,因为我们不知道落选者的动机。这真的很有效。但是,测试设置的命令无法按您所说的方式工作
docker-H unix://$HOME/altdocker--rm-it alpine sh
应该是
docker-H unix://$HOME/altdocker.socket run--rm-it alpine sh
。谢谢@dynamic\u cast。从更大的脚本中提取。更正了这个示例。我认为--graph被称为--data root。谢谢!要删除对
brctl
的依赖关系的小提示:可以用
sudo ip link add name$bridge type bridge
替换。感谢@thedrive--即使
brctl(8)
手册页也包含:
NOTES brctl(8)已过时。。。相反,使用iproute2包中的bridge命令…
(于2016年10月添加)。应该注意,DIND(docker in docker)是您作为最后手段或仅为开发目的而做的事情。在容器中运行容器有很多问题。