• dockercompose启动的一组服务,无法访问


    类似的情况,在两台服务器上都遇到了,但解决方法不太相同。分别记录一下

    情景1

    问题描述

    docker-compose up 启动了一组服务,其中包括了一个PG数据库服务。在启动过程中,报数据库无法连接的错误。

    容器启动后,发现不单是数据库无法通信,而是容器间无法通信,启动失败。

    解决

    docker networks 、docker inspect 查看了相关的网络信息,也查看了防火墙状态,都没有发现问题。

    随后重启了服务、重启了docker,都没有解决。

    最后万能的服务器重启……发现解决了。

    这个描述单独看没有太大的参考价值,但由于和情景2现象较为相似,且在同一时间发生,因此统一记录一下。

    情景2

    问题描述

    同样的一组服务,docker-compose up启动之后,容器间可以通信,但对外提供的web服务(3000端口),发现无法访问。

    尝试用 telnet 来测试,发现在宿主机上使用 telnet 127.0.0.1 3000可以联通,而尝试使用宿主机ip(即telnet host_ip 3000)则失败。

    解决尝试1

    也尝试了情景1中的各种重启组件、查看网络相关信息的操作,发现没有解决。

    随后在https://cloud.tencent.com/developer/article/1803122看到了类似的情况,于是尝试修改docker0的网段,尝试后发现失败。

    service docker stop
    
    # 关闭docker0的网卡
    ip link set dev docker0 down
    
    # 删除docker0网桥
    brctl delbr docker0
    
    # 重建docker0网桥
    brctl addbr docker0
    
    # 设置IP段
    ip addr add 172.17.42.2/24 dev docker0
    
    # 启动docker0网桥
    ip link set dev docker0 up
    
    # 重启docker引擎
    service docker start
    

    解决办法

    上面提到了查看网络信息,忘记怎么想起来执行了一下 ifconfig,发现居然存在2个所起docker-compose服务的网关信息,大概如下所示:

    [wang@DESKTOP-K8UBC7R system32]$ ifconfig
    br-xdklfjdkfjdk: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.25.0.1  netmask 255.255.255.0  broadcast 172.25.0.255
            inet6 fe80::cb3b:32ed:42d1:4efb  prefixlen 64  scopeid 0xfd<compat,link,site,host>
            ether 48:2a:e3:7f:4b:39  (Ethernet)
            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
    
    br-lkajfdlkj: flags=73<UP,LOOPBACK,RUNNING>  mtu 1500
            inet 172.25.0.1  netmask 255.255.255.0  broadcast 172.25.0.255
            inet6 ::1  prefixlen 128  scopeid 0xfe<compat,link,site,host>
            loop  (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
    

    此处就猜测应该是重启服务的过程中,可能出现了一些差错,导致多了一个服务的网关(虚拟网卡),因此通信出现了问题。

    尝试去服务正常的服务器上查看,发现只有一个虚拟网卡。

    于是尝试docker-compose down掉服务,删掉网卡,重启服务。执行后,服务正常,问题解决。

    删掉虚拟网卡的过程如下:

    ip link delete br-xxxxx
    
  • 相关阅读:
    转战物联网·基础篇06-深入理解MQTT协议之基本术语
    转战物联网·基础篇05-通俗理解MQTT协议的实现原理和异步方式
    转战物联网&#183;基础篇04-不可不知的进制关系与数据传输的本质
    转战物联网·基础篇03-从JSON数据到短指令谈思维的转变
    转战物联网·基础篇02-物联网中的角儿
    转战物联网·基础篇01-物联网之我见
    nRF24L01+组网方式及防撞(防冲突)机制的实战分享
    ElementUi中el-table分页效果
    原生无缝Banner轮播图
    详解立即执行函数(function(){}()),(function(){})()
  • 原文地址:https://www.cnblogs.com/wswang/p/16828584.html
Copyright © 2020-2023  润新知