米盾安全

Docker 宿主机不能访问了?这篇文章帮你解决网卡与内网 ip 段的冲突问题

290次阅读
没有评论

共计 1834 个字符,预计需要花费 5 分钟才能阅读完成。

众所周知,docker 默认的网桥网卡地址是 172.17.0.1/16,如果新建网卡的话地址是 172.18.0.1/16。依此类推,再创建了多块网卡以后,总有一块网卡地址会变成 172.21.0.1/16

巧了不是!阿蛮君公司内网也是这个网段,每次阿蛮君的电脑连接 docker 宿主机时都会死活连不上,猜测应该是这里的影响。等我把网络清理了,就能连接上了。

于是想办法修改 docker 的网络地址池,后来找到了一个配置,在 /etc/docker/daemon.json 文件添加一个配置 default-address-pools。

{
  "default-address-pools": [
    {
      "base": "172.17.0.0/16",
      "size": 24
    }
  ]
}

修改文件后,重新加载配置并重启 docker。

systemctl daemon-reload && systemctl restart docker

像阿蛮君上面的设置就是将网络固定在 172.17.0.0/16 网段。

查看网桥IP段,如下所示:

[root@n203 joplin]# docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "aad4ffb765e10c22f1ce7081c965db2cfe5632c43b72742cb5c814d5fdd08b6a",
        "Created": "2023-04-03T20:58:44.09626825+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/24"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

创建一块 test 网卡,再查看 ip 段。

[root@n203 joplin]# docker network create test3
1e20e4accb718b9161f30a9ac91d1bac97d1e99d2daff546488eb858fe3764e4
[root@n203 joplin]# docker network inspect test3
[
    {
        "Name": "test3",
        "Id": "1e20e4accb718b9161f30a9ac91d1bac97d1e99d2daff546488eb858fe3764e4",
        "Created": "2023-04-03T20:59:09.241662621+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.17.1.0/24",
                    "Gateway": "172.17.1.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

可以看见子网掩码都是 24,这是配置中的 size 的数值。

通过这种方式,完美解决 docker 与内网 ip 冲突问题。

提醒:本文发布于182天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 
阿蛮君
版权声明:本站原创文章,由 阿蛮君 2023-04-03发表,共计1834字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2023 阿蛮君博客 湘ICP备2023001393号
本网站由 青博数据 提供云计算服务 | 又拍云 米盾安全提供CDN加速/云存储服务