• docker部署Eurake服务,服务节点无法注册服务


    前言

      昨天在部署一个docker项目时遇到了一个问题,故记录下来.

    环境说明

      Centos7

      Docker version 18.06.3-ce, build d7080c1

    问题说明

    该项目分别启动五个docker容器,其中一个为eurake,启动eurake没问题但是,剩下的4个容器 启动后在向eurake进行注册时一直报连接不上

    2019-08-20T01:51:02.471367299Z 2019-08-20 01:51:02.471 ERROR 1 --- [tbeatExecutor-0] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://eureka.local:8761/eureka/}
    2019-08-20T01:51:02.471738157Z 2019-08-20 01:51:02.471 ERROR 1 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_CHICKEN-DATASOURCE/c40bde5b7b3d:chicken-datasource:8010 - was unable to send heartbeat!
    2019-08-20T01:51:03.472917034Z 2019-08-20 01:51:03.472 ERROR 1 --- [tbeatExecutor-0] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://eureka.local:8761/eureka/}
    2019-08-20T01:51:03.473274233Z 2019-08-20 01:51:03.472 ERROR 1 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_CHICKEN-DATASOURCE/c40bde5b7b3d:chicken-datasource:8010 - was unable to send heartbeat!

    时以为是宿主机没有配置hosts,配置完之后还是失败,修改ip为127.0.0.1 ..... 一系列无用操作后还是不行.后来想了一下,是否能通过容器里面来进行一些操作,来定位问题.

    但是新创建的容器里面有好多命令都没有,像telnet, ping, 百度中.... 

    进入容器docker exec -it 容器id /bin/bash 执行命令apt-get 三连

    apt-get update 
    apt-get install telnet
    apt-get install iputils-ping

    排查问题

    telnet 操作

    telnet ip:8761 ok
    telnet eureka.local 8761 提示unknown host

    ping操作

    ping ip ok
    ping eureka.local 提示unknown host

    找到问题,宿主机的hosts配置无法同步到容器中.也就是容器无法获取宿主机的hosts配置.

    解决问题

    在创建docker容器时,将如下参数添加进去即可.

    $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}') 

    参数说明:将宿主机的hosts文件从第三行开始添加到容器中

    docker run -p 8050:8050 -d --network bridge --name 容器名 $(cat /etc/hosts|awk -F ' ' '{if(NR>2){print "--add-host "$2":"$1}}' 容器镜像:镜像tag

    启动容器,完美解决

    参考博客

    https://www.cnblogs.com/zipon/p/6387602.html

    https://www.cnblogs.com/kazihuo/p/9773500.html

  • 相关阅读:
    python的三大控制机构(ifelse、for、while)
    python 异常处理
    《精通javascript》笔记
    IE6与!important
    point
    js 自制滚动条
    《Head first 设计模式》读书笔记
    Asp.net Webform 数据源绑定控件的扩展(懒人的办法):DropDownList
    Asp.net Binarysoft.Library 数据库通用操作层(Binarysoft.Library.Data)
    Asp.net Webform 从项目的数据库设计说起,什么是一个好的数据库设计。
  • 原文地址:https://www.cnblogs.com/charles1ee/p/11382212.html
Copyright © 2020-2023  润新知