1. 程式人生 > >docker容器自定義網路,使容器之間更容易通訊

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容器定義網路使容器之間容易通訊

docker引入網路新特性之後,內建了dns server,dns顧名思義域名解析,通過這個方式給容器指定ip和域名,可以讓容器間訪問使用自定義的ip和域名。 docker 自定義網路給容器指定ip、域名有以下幾種新特性 1.讓容器的網路基於dns的域

docker-compose定義網路固定容器ip地址

由於預設的bridge橋接網路,重啟容器後會改變ip地址。在一些場景下我們希望固定容器IP地址。 docker-compose是docker的一個編排工具,相對於命令模式建立網路,容器等。使用配置檔案相對來說更方便,可追溯問題。 直接貼上docker-compose.yml檔案 ve

docker定義網路固定容器ip地址

前言: 我們知道docker預設使用的是bridge網路模式,但每次重啟容器後ip會變化,但預設網路模式又不支援自定義ip. 那麼怎能讓ip不變呢,這裡我們需要自定義一個birdge網路。 步驟 1.首先檢視一下已有網路 docker network ls

docker使用commit建立定義映象啟動容器時內部應用自動啟動

使用 commit 建立 docker 映象時,因為 docker 容器啟動機制與原來的 linux 系統不一樣,所以原來的自啟動的應用在啟動容器之後都不會自動啟動。如docker容器裡的自己新增的mysql服務不啟動。 解決方法 建立映象時,在容器裡面

Docker使用定義網絡實現容器互聯

toc -- 進入 定義網絡 ping href busybox 定義 dock 目錄 容器互聯 步驟 新建網絡 連接容器 測試連接 添加已經運行的容器到自定義網絡 容器互聯 隨著 Docker 網絡的完善,強烈建議大家將容器加入自定義的 Docker 網絡來實現互聯

Docker:Docker思想&解決問題&Docker優勢&Docker基本概念&Docker安裝&基本設定&常用命令&網路管理&資料卷&構建定義映象&多容器管理

什麼是Docker? Docker是一個用來裝應用的容器,就好比杯子用來裝水,筆筒用來裝筆,書包用來裝書一樣,你可以把hello world放到Docker裡,你可以把網站放到Docker裡,你可以把你想的到的任何程式放到Docker裡。 Docker的思想

docker容器定義映象的兩種方法

目錄 1.使用docker commit 使用映象啟動容器,在該容器上修改,在使用命令另存為一個映象 實現思路:使用一個基礎的映象,這個映象可以在centos的官網進行下載,在使用docker進行建立 一個容器,進入到該容器中,刪除原有的yum

docker-compose 配置定義網路和靜態 ip 示例

version: '3.1' services: web: image: haojiliang/nginx-php-fpm-alpine:v1.15.7 container_name: "web_container" ports: - "80:80"

Docker 1.12.4 釋出應用容器引擎

Docker 1.12.4 釋出了,Docker 1.12 版本附帶了更新 rpm 的 systemd 單元檔案(包括 RHEL、Fedora、CentOS 和 Oracle Linux 7 ),當從舊版本的 docker 升級

Docker 1.9.0 釋出Linux 容器引擎

Docker 1.9.0 釋出,更新內容如下: Runtime docker stats now returns block IO metrics ( #15005) docker stat

Docker 1.8.3 釋出Linux 容器引擎

Docker 1.8.3 釋出,此版本更新內容: Fix layer IDs lead to local graph poisoning (CVE-2014-8178) Fix manifest validation and pars

ffmpeg 定義資料來源 可以是檔案可以是記憶體可以是網路 愛咋的咋的

ffmpeg 自定義資料來源, 可以是檔案,可以是記憶體,可以是網路, 愛咋的咋的 // ffmpeg_custom_context.cpp : Defines the entry point for the console application. //

Android 定義水平滾動的容器

public class HorizontalScrollView extends ViewGroup { //手勢 private GestureDetector mGestureDetector; private Horizonta

Docker定義網路和執行時指定IP

Docker 預設網路 Docker安裝後,預設會建立下面三種網路型別: 1 2 3 4 5 $ docker network ls NETWORK ID     NAME        DRIVER       SCOPE 9781b1f585ae   

nginx定義500502504錯誤頁面無法跳轉【轉】

header cli targe head href 錯誤 error tom htm 1、自定一個頁面,這個頁面是一個鏈接地址可以直接訪問的。 以下是nginx的配置: location / { proxy_pass http://tomcat_

定義方法傳入成績數組實現輸出考試成績的成三名

++ logs puts inpu eight parseint log 進行 println package com.imooc; import java.util.Arrays; /

jqGrid細節備註—jqGrid中定義格式URL格式

cto cti 函數名 pan sortable mod 51cto show 對象 本文來自:http://cnn237111.blog.51cto.com/2359144/782137 jqGrid中自定義格式,URL格式 當官方自帶的showlink用起來不是十分

python定義異常使用raise引發異常

value init tom 輸入 mar pri Coding pre lis 1.自定義異常類,自定義的異常類必須是Exception或者Error的子類! 1 #!/usr/bin/env python 2 # encoding: utf-8 3 4 cl

django 的模板語言template 定義過濾器定義標簽模板繼承

test block src view -- back def 其他 init 後端views文件傳來的字符串和對象,到前端頁面後需要進行渲染, {{ 變量 }}{{ 變量| filter:參數 }}filter可以有很多函數 {#對後端傳來的數據進行渲染,add 就是過濾

定義屬性使用步驟

attr size span att ply enc tco 獲取 out 1.values 文件夾下,新建attrs.xml,在resource節點下寫: <declare-styleable name="FillInInfoView">