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

查看創建的網絡

這裏寫圖片描述

當運行容器時指定加入剛創建的網絡,–net huzx,同時指定ip,–ip 172.25.0.3,通過–net-alias(或者–link)指定別名(類似域名),這裏我採用默認的別名(容器id即默認別名)。這個時候容器在創建的網橋中ip就變成指定的ip了,如圖所示:

這裏寫圖片描述

這種指定容器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如圖所示

這裏寫圖片描述

服務註冊效果圖如下

這裏寫圖片描述

注意:之所以eureka進入安全模式,可能是微服務運行內存空間不足導致健康檢查失敗所致,在此可以忽略。

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