zoukankan      html  css  js  c++  java
  • 不同主机间的 docker 网络互通

    背景:
    两台服务器主机分别是:192.168.0.111,192.168.0.114
    192.168.0.111 服务器上运行了两个docker镜像,分别是:rocketmq、consul
    192.168.0.114 服务器上运行了三个后台服务的docker镜像,分别是uip-uadmin、uip-pangu、uip-gateway

    问题:
    现在需要将三个后台服务注册到consul上,发现一直注册不上去。

    解决方案
    通过已经跑起来的docker镜像,查看服务器给docker容器分配的网段:
    在192.168.0.111上执行:

    docker inspect rocketmq

    可以看到输出内容含:(gateway的网段地址为172.17.0)

    "Networks": {
    "bridge": {
    "IPAMConfig": null,
    "Links": null,
    "Aliases": null,
    "NetworkID": "cfdffdfaed734aef5a0a06c8400ffd45bac828655468039419d780ab43ba9ead",
    "EndpointID": "6bc9f0b9d1695c9e39c5568efffcfbd98a1194b5c8bcc2ca1de54690aa58a295",
    "Gateway": "172.17.0.1",
    "IPAddress": "172.17.0.2",
    "IPPrefixLen": 24,
    "IPv6Gateway": "",
    "GlobalIPv6Address": "",
    "GlobalIPv6PrefixLen": 0,
    "MacAddress": "02:42:ac:11:01:02",
    "DriverOpts": null
    }
    }

    由此可知,111服务器给docker容器分配的网段是:172.17.0
    同理可知,114服务器给docker容器分配的网段也是:172.17.0
    需要修改其中一个服务器的docker容器网段,使不一致。因为111服务器上跑的docker容器比较少,所以我们将111服务器上的docker容器网段指定为:172.17.1
    在192.168.0.111服务器的/etc/docker下建立文件daemon.json,输入以下内容进行网段指定:

    {"bip":"172.17.1.1/24"}

    daemon.json 整体内容:

    [root@localhost docker]# cat daemon.json 
    {"bip":"172.17.1.1/24"}

    在192.168.0.111服务器上添加网段路由:

    ip route add 172.17.0.0/24 via 192.168.0.114

    重启 docker

    systemctl restart docker

    重启rocketmq、consul

    docker restart rocketmq
    docker restart consul

    再次查看服务器给docker容器分配的网段:
    在192.168.0.111上执行:

    docker inspect rocketmq

    可以看到输出内容含:(gateway的网段地址已经变成172.17.1了)

    "Networks": {
    "bridge": {
    "IPAMConfig": null,
    "Links": null,
    "Aliases": null,
    "NetworkID": "cfdffdfaed734aef5a0a06c8400ffd45bac828655468039419d780ab43ba9ead",
    "EndpointID": "6bc9f0b9d1695c9e39c5568efffcfbd98a1194b5c8bcc2ca1de54690aa58a295",
    "Gateway": "172.17.1.1",
    "IPAddress": "172.17.1.2",
    "IPPrefixLen": 24,
    "IPv6Gateway": "",
    "GlobalIPv6Address": "",
    "GlobalIPv6PrefixLen": 0,
    "MacAddress": "02:42:ac:11:01:02",
    "DriverOpts": null
    }
    }

    然后将114服务器上的三个docker容器进行重启,就能在consul控制台上看到服务正常注册上去了。

  • 相关阅读:
    vue3+typescript引入外部文件
    vue项目中使用sass
    关于Vue.use()使用详解
    案例:密码框格式提示信息错误
    案例:显示隐藏文本框里面的内容
    案例:循环精灵图案例
    案例:关闭淘宝二维码案例
    案例: 仿京东显示隐藏密码
    案例:根据系统时间显示不同的问候语
    ES6中类和对象的注意问题
  • 原文地址:https://www.cnblogs.com/miaoying/p/12760509.html
Copyright © 2011-2022 走看看