一个docker简单的操作导致的整体网络故障

1.故障现象:用户报障说网络中断,打开发现服务器侧的网络,时而通时而不通。

咨询用户,告知只是在10.1.1.34这台服务器做了操作,通过BMC到服务器上,查看history,发现用户执行了命令,docker run --rm --net shared_nw busybox ping 192.203.230.10

进入docker,查看:

将这个容器关闭docker stop be90dc40e7d8,网络恢复。

2.分析根因:

在BMC中进行测试,docker run –rm –net shared_nw_busybox ping 192.203.230.10

查看arp,发现网关10.1.1.1的MAC地址在变,原来容器里发布了网关10.1.1.1的IP地址,导致MAC地址冲突,时通时不通,

查看容器的network的情况,

[weihj@cicdhosts sysconfig]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

45681218fc39        bridge              bridge              local

6a864d0ca853        host                host                local

6bef7504a66e        none                null                local

6c3e7034deb3        shared_nw           bridge              local

 

docker network inspect 6c3e7034deb3 ,如下表:(发现容器中存在10.1.1.101的IP地址,和网关地址10.1.1.1的MAC地址02:42:0a:01:01:01非常相似。计算了一下,10.1.1.101的最后一位101,换算成16进制就是65,(即6*16+5=101),所以这个MAC地址从容器中来是无疑了)。

                "MacAddress": "02:42:0a:01:01:65",

                "IPv4Address": "10.1.1.101/24",

[weihj@cicdhosts sysconfig]$ docker network inspect 6c3e7034deb3        

[

    {

        "Name": "shared_nw",

        "Id": "6c3e7034deb37bf21e69ccb62d2517eb90cb50c9ca0512b739d356c33b835497",

        "Created": "2019-10-13T16:26:38.504975461+08:00",

        "Scope": "local",

        "Driver": "bridge",

        "EnableIPv6": false,

        "IPAM": {

            "Driver": "default",

            "Options": {},

            "Config": [

                {

                    "Subnet": "10.1.1.0/24",

                    "Gateway": "10.1.1.34"

                }

            ]

        },

        "Internal": false,

        "Attachable": false,

        "Ingress": false,

        "ConfigFrom": {

            "Network": ""

        },

        "ConfigOnly": false,

        "Containers": {

            "39abbc28cff13ed184450619db752472f724320b3060c744a0ee8e84618c7186": {

                "Name": "gitlab",

                "EndpointID": "92699c32bb0c3d08fd2aeba47459685118249f1862d6687442bfdeeb9084520b",

                "MacAddress": "02:42:0a:01:01:65",

                "IPv4Address": "10.1.1.101/24",

                "IPv6Address": ""

            }

        },

        "Options": {

            "com.docker.network.bridge.name": "docker1"

        },

        "Labels": {}

    }

]

 

但是这个IP地址是怎么来的的?查看容器busybox的在容器中的IP地址,

 

原来如此,10.1.1.1被当做动态IP被分配给了容器,和网关的IP地址冲突。

查了一下docker的手册,有个参数ip-range,在建网桥的时候直接将网关地址排除掉就可以了。

“”docker network create \

  --driver=bridge \

  --subnet=10.1.0.0/16 \

  --ip-range=10.1.2.0/24 \

  --gateway=10.1.1.1 \

  br0

3.结论:

docker在企业网里的使用,怎样才是最佳实践?还需要多仔细研究研究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值