docker内部ip与内网其它ip网段冲突导致无法访问的解决方法

这篇具有很好参考价值的文章主要介绍了docker内部ip与内网其它ip网段冲突导致无法访问的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

现象:

宿主机和docker内部能互相访问非常正常,但docker内部访问外部网络内网其中一个网段172.18.0.x则无法访问。

排查

由于docker是精简过的系统,需另外安装网络相关命令
首先更新apt-get,否则在apt-get install 命令时会报E: Unable to locate package xx错误

apt-get update

安装网络工具

apt-get install -y net-tools

安装ping和telnet

apt-get install -y iputils-ping
apt-get install -y telnet

查看本机ip和网关,可用ifconfig和hostname -i命令

ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.1.2  netmask 255.255.255.0  broadcast 172.18.1.255
        ether 02:42:ac:14:01:02  txqueuelen 0  (Ethernet)
        RX packets 224  bytes 20754 (20.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 226  bytes 1617336 (1.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

果然ip为172.18.0.x,与现在外部内网其中一段Ip重复了,但是并没有看到网关,再在cmd里通过docker network命令确认一下

docker network ls
NETWORK ID     NAME                   DRIVER    SCOPE
f2d743a9d1d7   bridge                 bridge    local
aa072983972b   host                   host      local
3689e62360ba   none                   null      local
0c92c70dfedd   webcloudapi_default    bridge    local

然后查询该网络详细

docker network inspect webcloudapi_default
[
    {
        "Name": "webcloudapi_default",
        "Id": "0c92c70dfeddaca8722c5278831f07cb1555be23fdc74b8536ad2017eeb4ca3e",
        "Created": "2023-08-31T01:23:30.156696Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "default",
            "com.docker.compose.project": "webcloudapi",
            "com.docker.compose.version": "2.20.2"
        }
    }
]

看到ip和网关都为172.18.0.x的,这时候确认问题,可以着手调整了。

解决方案

通过docker compose在部署的时候更改默认ip和网关即可。
webapi-compose.yml

version: '3'
networks:
  test-net:
    ipam:
      config:
      - subnet: 172.20.1.0/24
        gateway: 172.20.1.1
services:
  webcloudapi:
    image: webcloudapi
    container_name: webcloudapi
    hostname: webcloudapi
    ports:
        - 20020:80
    restart: always
    networks:
      test-net:
        ipv4_address: 172.20.1.2

重新运行部署此yml文件(注意,这个操作会将原容器更改过的内容,包括新下载的命令软件全部重置)

docker compose -p webcloudapi -f webapi-compose.yml up -d

这时候再用api-get重新按上述步骤下载网络相关命令查看,ip和网关都变成172.20.1.x网段了,说明设置成功,但ping 172.18.0.x仍然无法连通,奇怪,后来终于发现问题所在,是之前部署的docker network配置还存在导致的问题

docker network ls
NETWORK ID     NAME                   DRIVER    SCOPE
f2d743a9d1d7   bridge                 bridge    local
aa072983972b   host                   host      local
3689e62360ba   none                   null      local
0c92c70dfedd   webcloudapi_default    bridge    local
d0916e722225   webcloudapi_test-net   bridge    local

上面的webcloudapi_default是原来的,webcloudapi_test-net是新建的,因此只要删除原来的即可。

docker network rm webcloudapi_default

重启容器后,终于ping通了,至此问题解决。文章来源地址https://www.toymoban.com/news/detail-721149.html

到了这里,关于docker内部ip与内网其它ip网段冲突导致无法访问的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker虚拟网桥和业务网段冲突处理

    ifconfig查看docker虚拟网桥ip地址 docker inspect --format=\\\'{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}\\\' $(docker ps -aq)查询所有容器的ip 修改docker-compose networks networks    xxx-network:       driver: bridge        ipam:           config:              - subnet: 183.18.0.0/16              

    2024年02月07日
    浏览(55)
  • natapp内网穿透-将本地运行的程序/服务器通过公网IP供其它人访问

    LAN(Local Area Network,局域网)是一个可连接住宅,学校,实验室,大学校园或办公大楼等有限区域内计算机的计算机网络。 内网是指内部局域网,也就是说内网一般是用于局域网内部的计算机之间的互相通信,不与外部网络连接进行通信的意思。 一些不对外开发的功能,仅

    2024年02月07日
    浏览(42)
  • ip地址冲突导致ping时通时断显示超时问题处理过程

    目录 1 现象     2 Ping的过程:    3 可能的原因: 4 排查过程 类似问题:ip冲突问题解决和复现过程_wj31932的博客-CSDN博客 无法上网故障排查过程及复现过程系ip冲突造成_wj31932的博客-CSDN博客_arp获取不到网关mac地址        一天,同事反馈他的pc出现ping外网时通时断,一会

    2024年01月21日
    浏览(44)
  • Docker内部时间与主机时间不同导致时间差异的解决方法

    Docker内部时间与主机时间不同导致时间差异的解决方法 在使用Docker进行开发或部署应用程序时,我们可能会遇到一个常见的问题,就是Docker容器内部的时间与主机的时间存在差异。这种时间差异可能会导致一些应用程序出现问题,尤其是涉及到时间敏感操作的情况。本文将介

    2024年02月07日
    浏览(40)
  • 云服务器与内网穿透有什么区别?哪个好用?

    云服务器与内网穿透有什么区别,哪个好用?如何在自己公网IP云主机上部署搭建P2P穿透?这里给大家汇总介绍一下,供大家共同学习了解。 云服务器的一些特点: 需要数据上云场景时,通常可以选择使用云服务器。 1.数据上云。 比如网站服务的,网站程序文件和数据库等

    2024年02月09日
    浏览(46)
  • 将Apache服务与内网穿透结合,让您的网站可以公网访问

    Apache作为全球使用较高的Web服务器软件,它可以在几乎所有常见的计算机平台上运行。由于其卓越的跨平台性和高级安全性,又兼具快速、可靠且易于通过简单的API扩展而闻名,被广泛应用于Web服务器领域。本文主要分享一下在Windows系统如何安装与配置Apache服务,并结合内网

    2024年02月09日
    浏览(62)
  • FastDFS文件系统本地部署结合Nginx与内网穿透实现远程访问本地服务器

    FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考

    2024年02月05日
    浏览(58)
  • Docker 网络 IP 地址冲突了,该怎么办呢?

    Docker 网络 IP 地址冲突这个问题其实稍微有一点点麻烦,网上也没有看到有比较全面正确的文章, 值得单独写一篇记录一下。 因为交换机的能力有限制,以及网线的连接不可能无限长, 所以我们不可能把所有的主机都连到同一个交换机上,然后处于同一个二层网络中。 就算

    2024年02月13日
    浏览(47)
  • 如何解决交换机的DDoS攻击与内网服务器DDoS攻击的问题

    有过网吧或机房管理经验朋友肯定知道,机器中的病毒是很让人头疼的事情,尤其是内网服务器DDoS攻击和交换机的DDoS攻击,直接影响网吧网络的安全问题,分享解决这个问题的方法。 1、在PC上安装过滤软件 它与ARP防御软件类似,通过监控网卡中所有的报文,并将其与软件自

    2024年02月06日
    浏览(47)
  • docker内部ping和ip命令的使用

    1、ping 1.1首先解决权限问题 docker 中执行: apt-get update 报错: E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied) 问题原因 :权限不足,请使用 root 用户 解决方案 :0 表示 root 用户 2.2 ping解决 问题原因 : 解决方法 : 先进入docker 更新apt 安装插件ping : 2、

    2024年02月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包