docker(4)docker的網絡,自定義網橋

Docker 的網絡前端

運行 ifconfig 找到 docker0 : 虛擬網卡默認網卡名稱爲docker0web

  

查看docker 的網橋:docker

我這裏默認們沒有進行安裝 網橋管理設備:進行安裝一下;數據庫

yum install  bridge-utilsjson

  

命令:查看網橋crctl show:
  vim

注意上圖中的interfaces  這裏爲空,咱們啓動一個新的容器以下:後端

命令: docker run -d -it --name centos6 centoscentos

  

咱們進入容器中查看該容器的ip 地址網絡

我這裏的容器是最小化的centos,通常狀況我都會安裝一下幾個學習

yum install  net-tools

yum install  vim

yum install  telnet   

  

我看查看容器中的IP地址:

Docker 默認已經給咱們分配了地址

   

退出後在查看咱們本機的網橋:這裏注意 interfaces 發生了變化

  

這是docker0: 在容器建立時,爲鏈接容器建立的網絡接口。

咱們運行容器的時候也能夠查看該網絡接口:

  

修改docker0 的ip地址: 使用超級管理員權限
sudo ifconfig docker0  192.168.254.0  netmask 255.255.255.0

  

自定義網橋:

  • 用戶定義的橋接器可在容器化應用程序之間提供更好的隔離和互操做性

鏈接到同一用戶定義的網橋的容器會自動將全部端口相互暴露,而且不會向外界顯示任何端口。這使得容器化應用程序能夠輕鬆地相互通訊,而不會意外地打開對外界的訪問。

想象一下具備Web前端和數據庫後端的應用程序。外部世界須要訪問Web前端(可能在端口80上),但只有後端自己須要訪問數據庫主機和端口。使用用戶定義的網橋,只須要打開Web端口,而且數據庫應用程序不須要打開任何端口,由於Web前端能夠經過用戶定義的網橋訪問它。

若是在默認網橋上運行相同的應用程序堆棧,則須要打開Web端口和數據庫端口,並使用 每一個的標記-p--publish標記。這意味着Docker主機須要經過其餘方式阻止對數據庫端口的訪問。

  • 用戶定義的橋接器在容器之間提供自動DNS解析

默認網橋上的容器只能經過IP地址相互訪問,除非您使用被認爲是遺留的--link選項。在用戶定義的橋接網絡上,容器能夠經過名稱或別名相互解析。

想象一下與前一點相同的應用程序,具備Web前端和數據庫後端。若是你打電話給你的容器webdb,Web容器能夠在鏈接到數據庫容器db,不管哪一個碼頭工人託管應用程序堆棧上運行。

若是在默認橋接網絡上運行相同的應用程序堆棧,則須要在容器之間手動建立連接(使用舊--link 標誌)。這些連接須要在兩個方向上建立,所以您能夠看到這對於須要通訊的兩個以上容器而言變得複雜。或者,您能夠操做/etc/hosts容器中的文件,但這會產生難以調試的問題。

  • 容器能夠在運行中與用戶定義的網絡鏈接和分離

在容器的生命週期中,您能夠動態地將其與用戶定義的網絡鏈接或斷開鏈接。要從默認橋接網絡中刪除容器,您須要中止容器並使用不一樣的網絡選項從新建立容器。

  • 每一個用戶定義的網絡都會建立一個可配置的網橋

若是容器使用默認網橋,則能夠對其進行配置,但全部容器都使用相同的設置,例如MTU和iptables規則。此外,配置默認橋接網絡發生在Docker自己以外,而且須要從新啓動Docker。

使用建立和配置用戶定義的網橋 docker network create。若是不一樣的應用程序組具備不一樣的網絡要求,則能夠在建立時單獨配置每一個用戶定義的網橋。

  • 默認橋接網絡上的連接容器共享環境變量

最初,在兩個容器之間共享環境變量的惟一方法是使用--link標誌連接它們。用戶定義的網絡沒法實現這種類型的變量共享。可是,有更好的方法來共享環境變量。一些想法:

  • 多個容器能夠使用Docker卷裝入包含共享信息的文件或目錄。
  • 能夠一塊兒啓動多個容器docker-compose,而且compose文件能夠定義共享變量。
  • 您能夠使用swarm服務而不是獨立容器,並利用共享機密和 配置

鏈接到同一用戶定義的網橋的容器有效地將全部端口相互暴露。對於能夠訪問不一樣網絡上的容器或非Docker主機的端口,必須使用or 標誌發佈該端口。-p--publish

上面是docker 文檔中的一段話:總體描述了docker 自定義網橋的用處。     

 

 

開始自定義網橋

我這裏開啓了一臺新咱們查看網絡信息

Ifconfig

  

 

首先中止容器運行:

systemctl stop docker.service

   

中止docker0 默認網橋

sudo ip link set dev docker0 down

  

刪除docker0 網橋

sudo ip link del dev docker0

   

 上圖中能夠看到網橋已經刪除成功:

 

建立新的網橋:並配置IP地址,並啓動網橋

sudo brctl addbr docker1

sudo ip addr add 192.168.100.1/24 dev docker1

sudo ip link set dev docker1 up

   

配置使用自定義網橋:保存退出

vi /etc/docker/daemon.json

  

啓動並運行一個容器:

systemctl start docker.service

docker run -d -it --name centos1 centos

進入容器中:

docker inspect -f {{.State.Pid}} centos1

nsenter --target 19745 --ipc --uts --mount --pid --net

  

安裝ifconfig 命令並查看 容器IP

yum install net-tools

  

  查看網絡

  

 

 

有不足之處 但願你們指出相互學習,

            本文原創:轉載請註明出處 謝謝!

相關文章
相關標籤/搜索