正常我们起一个微服务注册到eureka他的实例id是默认这样的主机名称:服务名称:服务端口号,

如果配置eureka.instance.prefer-ip-address=true则实例id为主机Ip:服务名称:服务端口号

当然我们也可以通过eureka.instance.instance-id自定义实例ID格式。

但是当我们以docker化微服务的时候发现注册到eureka中的实例ID变为containerId:服务名称:服务端口号

而且docker 容器每重启一次(这里指删除容器重启,containerId变化),就多一个该服务的实例如d1deb75f7aed:rms:8080,并且被删除的容器实例d2b59f32b427:rms:8080不下线

问题1:怎么让容器启的微服务也注册为{主机名称:服务名称:服务端口号}或{主机Ip:服务名称:服务端口号}?   

指定容器网络模式为host,如:

docker run -d --name rms --net host cm/rms:latest

为什么要指定网络模式host:

  • –net=bridge— 默认选项,用网桥的方式来连接docker容器。
  • –net=host— docker跳过配置容器的独立网络栈。
  • –net=container:NAME_or_ID— 告诉docker让这个新建的容器使用已有容器的网络配置。
  • –net=none— 告诉docker为新建的容器建立一个网络栈,但不对这个网络栈进行任何配置,所以只能访问本地网络,没有外网。

详细请点链接:https://blog.csdn.net/weixin_38319645/article/details/81349541

问题2:怎么让停掉的容器服务下线?

通过api强制下线

  DELETE http://{ip}:{port}/eureka/apps/{appName}/{inatanceId}

  如:http://ip:port/eureka/apps/rms/10d4a6d7e8a6:rms:8080

通过自定义实例id,让后起的实例挤掉先起的失效实例

配置文件中指定instance-id:

spring.application.name=rms
server.port=8080
eureka.instance.instance-id=${spring.application.name}:${server.port}
eureka.instance.prefer-ip-address=true

这样不管怎么启服务,他的Id都是一样的,后起的会把之前的挤掉。至少不会因为containerId变化导致的实例id不同,让实例一直增加。

我们从页面上继续看这个ID后面是啥?

目前还没找到办法让container停止服务自动下线方法

已解决: https://www.cnblogs.com/dreamfly2016/p/11698759.html

spring cloud之docker微服务客户端注册eureka问题的更多相关文章

  1. 《Spring Cloud与Docker微服务架构实战》配套代码

    不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...

  2. Spring Cloud与Docker微服务架构实战 PDF版 内含目录

    Spring Cloud与Docker微服务架构实战  目录 1 微服务架构概述 1 1.1 单体应用架构存在的问题1 1.2 如何解决单体应用架构存在的问题3 1.3 什么是微服务3 1.4 微服务 ...

  3. Spring Cloud与Docker——微服务架构概述

    Spring Cloud与Docker--微服务架构概述 单体应用架构概述 微服务概述 微服务的特性 微服务架构的优点 微服务面临的挑战 微服务的设计原则 单体应用架构概述 传统的服务发布都是采用单体 ...

  4. Spring Cloud与Docker微服务架构实战 PDF

    电子版百度云下载 链接: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ 提取码: 关注公众号[GitHubCN]回复2019获取 本书的代码 共计70 ...

  5. SpringCloud(9)使用Spring Cloud OAuth2保护微服务系统

    一.简介 OAth2是一个标准的授权协议. 在认证与授权的过程中,主要包含以下3种角色. 服务提供方 Authorization Server. 资源持有者 Resource Server. 客户端 ...

  6. 从 Spring Cloud 看一个微服务框架的「五脏六腑」

    原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...

  7. spring cloud + mybatis 分布式 微服务 b2b2c 多商户商城 全球部署方案

    用java实施的电子商务平台太少了,使用spring cloud技术构建的b2b2c电子商务平台更少,大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B ...

  8. 【架构】Kubernetes和Spring Cloud哪个部署微服务更好?

    Spring Cloud 和Kubernetes都自称自己是部署和运行微服务的最好环境,但是它们在本质上和解决不同问题上是有很大差异的.在本文中,我们将看到每个平台如何帮助交付基于微服务的架构(MSA ...

  9. 从 Spring Cloud 看一个微服务框架的「五脏六腑」(转)

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: ...

随机推荐

  1. centos能进入命令行界面,进不了图形界面

    在开机引导界面按“e”, 找到linux16开头的一行,定位到ro然后修改ro为rw,并添加:init=/sysroot/bin/sh 使用ctrl x进入安全模式. 使用命令:chroot /sys ...

  2. Samba服务器配置案例

      一.项目背景 某公司有system.develop.productdesign和test等4个小组,个人办公机操作系统为Windows 2000/XP/2003,少数开发人员采用Linux操作系统 ...

  3. MySQL中DATA类型数据和DATATIME类型数据的比较

    在网上大题查了下这个问题,网上有的人说可以直接比较,并给出了测试用例,也有的人说不能比较,于是我自己尝试了一下,实际测试是可以的,不过,当传入DATA类型时间与DATATIME类型时间进行比较的时候, ...

  4. Git 分支开发规范

    您必须知道的 Git 分支开发规范 Git 是目前最流行的源代码管理工具. 为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作. 分支管理 分支命名 ma ...

  5. C# 之 .net core -- EF code first连接Mysql数据库

    一.在Models 新建两个数据库类 这个是数据库需要生成的类基础(塑造外观) public class User { [Key] public string ID { get; set; } [Ma ...

  6. 冒泡排序Bubble_Sort

    基本原理:对于冒泡排序来说,基本思想是从第一个元素开始,数组中的数据依次和它后面相邻的数据进行比较,即1和2比较,2和3比较,a和a+1比较,直到倒数第二位和倒数第一位的比较,如果顺序不对就进行交换, ...

  7. Prim算法和Kruskal算法介绍

    一.Prim算法 普利姆(Prim)算法适用于求解无向图中的最小生成树(Minimum Cost Spanning Tree).下面是Prim算法构造最小生成树的过程图解.              ...

  8. TCP/IP协议簇 端口 三次握手 四次挥手 11种状态集

    第一章:概念介绍 1.1 VLAN 1.1.1 什么是VLAN VLAN (Virturl LAN) ,翻译成中文是:“虚拟局域网”.VLAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计 ...

  9. [Web Component] Allow External Styling of a Web Component's Shadow DOM

    The Shadow DOM protects your components from style conflicts. The same protection also makes it hard ...

  10. gcc/g++以c++11编译

    方法一: //在程序头加上预定义编译器命令 #pragma GCC diagnostic error "-std=c++11" //通过#pragma 指示 GCC编译器处理错误的 ...