设为首页 收藏本站
查看: 737|回复: 0

[经验分享] Docker CE overlay网络隔离测试

[复制链接]

尚未签到

发表于 2018-5-27 13:51:13 | 显示全部楼层 |阅读模式
Docker 的多种网络模式中,bridge的网络模式是用于同一台宿主机上的docker之间的互通,如果要实现多台宿主机上docker之间跨节点的通讯就需要借助overlay网络


docker swarm 模式中,通过 docker service create 创建的容器默认会使用名为ingressoverlay网络模式,在这种网络模式下,service会在不同节点(宿主机)上建立容器,不同节点上容器的ip会处在同一子网内;


同样的,如果建立多个service,比如,同时建了nginx viz两个service,那么这两个service下的容器也都会在同一子网下,如下所示,同一节点上,serivce nginx 的容器ip 为10.255.0.4,service viz 容器的ip为10.255.0.6,两者都在ingress网络中


#docker network inspect ingress
       "Internal": false,
       "Attachable": false,
       "Ingress": true,
        "Containers":{
           "00bf0cc88d8363581b10a6a64a34cc2864d51926ecaa445fba7af0bc488d553d":{
                "Name":"nginxtest.1.5yukmeotwnl2v0smmhy26bwkg",
               "EndpointID":"064080c4efc9048bf0b0a44ab1d52d63c627f277d9d589be8cc9723c081e2616",
               "MacAddress": "02:42:0a:ff:00:04",
                "IPv4Address":"10.255.0.4/16",
               "IPv6Address": ""
            },
           "ac7ec55f931e1a4c1ece6e56a935ac0871ab6fe88e9eae35e1671513c9204b77":{
                "Name":"viz.1.zhmcw7mtvzzrma31l3letnmxp",
               "EndpointID":"0477642232e30c34c9bdc6cb8e83b0d2726a5169df8daa8c47225b8d16163ec7",
               "MacAddress": "02:42:0a:ff:00:06",
                "IPv4Address":"10.255.0.6/16",
               "IPv6Address": ""
            },
           "ingress-sbox": {
               "Name": "ingress-endpoint",
               "EndpointID":"61ae637e13284274480a1f9928bd7c627543336875a64dbdd272850285252136",
               "MacAddress": "02:42:0a:ff:00:02",
               "IPv4Address": "10.255.0.2/16",
               "IPv6Address": ""
            }
        },
       "Options": {
           "com.docker.network.driver.overlay.vxlanid_list":"256"
…………………………………………………..

如果不想让多个service 在同一子网内,比如多租户的场景,在这种情况下,就需要另外创建自定义overlay 网络,实现不同用户的服务在各自的子网内



创建名为mynetoverlay网络
docker network create mynet -d overlay
7njqr6p45krfw6msq8wgxdqu3


查看mynet基本信息
# docker network inspect mynet
[
    {
       "Name": "mynet",
       "Id": "7njqr6p45krfw6msq8wgxdqu3",
       "Created": "0001-01-01T00:00:00Z",
       "Scope": "swarm",
       "Driver": "overlay",
       "EnableIPv6": false,
       "IPAM": {
           "Driver": "default",
           "Options": null,
           "Config": []
        },
       "Internal": false,
       "Attachable": false,
       "Ingress": false,
       "Containers": null,
       "Options": {
            "com.docker.network.driver.overlay.vxlanid_list":"4096"
        },
       "Labels": null
}

如上所示,新创建的mynet network vxlan id 为 4096,不同于 ingress 的 vxlan id 256 ,同时,由于还没有容器被加入到mynet网络,因此 mynet还没有被分配ip地址段

创建一个使用mynet网络的service
docker service create --replicas 2 --name nginx_test01 --network mynet  nginx
服务起来后,再次查看mynet网络


docker network inspect mynet
…………………………………………………….
           "Options": null,
           "Config": [
                {
                   "Subnet": "10.0.0.0/24",
                   "Gateway": "10.0.0.1"
                }
            ]
        },
       "Internal": false,
       "Attachable": false,
       "Ingress": false,
       "Containers": {
           "a67b21bdc3d1bb144816e436f5cc5a303539ae3db8a7564236740fc46233a665":{
               "Name": "nginx_test01.1.xscom3xofubdgzp1xixt69r93",
               "EndpointID": "0dbd0fca51d0c477ee653e6f0f12048e38acb6e1a404fe1f9ae4e6506563cfce",
               "MacAddress": "02:42:0a:00:00:03",
               "IPv4Address": "10.0.0.3/24",
               "IPv6Address": ""
            }
        },
       "Options": {
           "com.docker.network.driver.overlay.vxlanid_list":"4096"
……………………..

可以看到mynet加入了一个容器,它的网段随之也变成了10.0.0.0/24


验证下不同网段下容器是否能否互通
进入使用mynet网络的容器
docker exec –it  a67b21bdc3d1 bash
[root@ a67b21bdc3d1 /]# ping 10.255.0.6  #ping ingress 网络下的容器
PING 10.255.0.6 (10.255.0.6) 56(84) bytes of data.  
无法ping通,说明vxlan隔离作用生效了,如果是相通的,你可能需要升级下系统内核
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481843-1-1.html 上篇帖子: docker部署gitlab 下篇帖子: 【Docker数据卷】创建docker数据卷的2种方式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表