是否有可能在同一台机器上启动多个docker守护进程
如果可能的话,你将如何configuration每个守护进程 – graphics位置,图像位置等?
是的,即使没有Docker Machine,也可以在单个主机上运行两个Docker守护进程。 从Docker 1.9.1开始,如果两个守护进程使用默认值,那么以下docker daemon
标志将会导致冲突:
-b, --bridge= Attach containers to a network bridge --exec-root=/var/run/docker Root of the Docker execdriver -g, --graph=/var/lib/docker Root of the Docker runtime -H, --host=[] Daemon socket(s) to connect to -p, --pidfile=/var/run/docker.pid Path to use for daemon PID file
-
--bridge
的默认值是docker0
,如果你没有使用默认值,你必须手动创build和configuration网桥(Docker不会为你创build/pipe理)。 下面更多细节。 -
--exec-root=/var/run/docker
是存储容器状态的地方。 -
--graph=/var/lib/docker
是存储图像的地方。 -
--host=[]
指定Docker守护进程将侦听客户端连接的位置。 如果未指定,则默认为/var/run/docker.sock
。 -
--pidfile=/var/run/docker.pid
是守护进程的进程ID存储位置。
所以,只要你的两个守护进程为这些标志使用不同的值,你可以在同一个主机上运行它们。 示例脚本(包括networking设置):
#!/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 brctl addbr $bridge sudo ip addr add ${net:-"10.20.30.1/24"} dev $bridge sudo ip link set dev $bridge up fi sudo docker daemon \ --bridge=$bridge \ --exec-root=$base.exec \ --graph=$base.graph \ --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 -it alpine sh / # echo hereiam hereiam
好问题! 可以在一个容器中启动一个Docker守护进程。 在那个容器里,你将能够启动更多的容器。 这样你可以在同一台主机上运行不同设置的docker守护进程。
签出这个项目: https : //github.com/jpetazzo/dind 。 它提供了一个包含Docker本身的Docker镜像,就像你需要的一样。
是的,这可以通过使用Docker机器来实现
使用这个,你可以创build多个docker守护进程并在它们之间切换。