docker容器自定义网络,使容器之间更容易通信

docker引入网络新特性之后,内置了dns server,dns顾名思义域名解析,通过这个方式给容器指定ip和域名,可以让容器间访问使用自定义的ip和域名。

docker 自定义网络给容器指定ip、域名有以下几种新特性

  • 1.让容器的网络基于dns的域名解析
  • 2.拥有与宿主机之间安全的隔离环境
  • 3.*的选择或放弃一个网络
  • 4.支持以-link给容器定义别名(通过–net-alias也可以设置别名)
  • 5.给出一个spring boot注册eureka的实例

当运行容器加入一个自定义网络时,不指定ip和域名,默认以容器id配置域名

首先通过以下命令来创建一个自定义网络

docker network create –subnet 172.25.0.1/16 huzx

查看创建的网络

docker容器自定义网络,使容器之间更容易通信

当运行容器时指定加入刚创建的网络,–net huzx,同时指定ip,–ip 172.25.0.3,通过–net-alias(或者–link)指定别名(类似域名),这里我采用默认的别名(容器id即默认别名)。这个时候容器在创建的网桥中ip就变成指定的ip了,如图所示:

docker容器自定义网络,使容器之间更容易通信

这种指定容器ip和域名的方式,单机情况下,在docker部署spring boot应用时,非常重要,因为spring boot的配置文件中如果要注册到服务注册中心,需要事先知道服务中心的ip或者域名,以便他们之间容器的通信。如果是采用默认的网络,将会自动分配一个容器ip,很不便于后期的spring boot开发、部署、迁移。

创建一个eureka-server的微服务,创建一个eureka-client的微服务,让两个微服务同时加入上面的网络,同时指定eureka-server的ip为–ip 172.25.0.2,eureka-client微服务的ip为 -ip 172.25.0.3,然后在eureka-client中可以事先的配置服务注册中心的ip。

huzx网桥中,两个容器ip如图所示

docker容器自定义网络,使容器之间更容易通信

服务注册效果图如下

docker容器自定义网络,使容器之间更容易通信

注意:之所以eureka进入安全模式,可能是微服务运行内存空间不足导致健康检查失败所致,在此可以忽略。

上一篇:docker的三种通信方式bridge、host、none
下一篇:未完待续