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

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

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

是的,即使没有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 listDaemon 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.shset -e -x: ${bridge=altdocker}: ${base=$HOME/$bridge}# Set up bridge network:if ! ip link show $bridge > /dev/null 2>&1then   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 upfisudo 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 hereiamhereiam

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

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4987706.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存