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主機須要經過其餘方式阻止對數據庫端口的訪問。
默認網橋上的容器只能經過IP地址相互訪問,除非您使用被認爲是遺留的--link
選項。在用戶定義的橋接網絡上,容器能夠經過名稱或別名相互解析。
想象一下與前一點相同的應用程序,具備Web前端和數據庫後端。若是你打電話給你的容器web
和db
,Web容器能夠在鏈接到數據庫容器db
,不管哪一個碼頭工人託管應用程序堆棧上運行。
若是在默認橋接網絡上運行相同的應用程序堆棧,則須要在容器之間手動建立連接(使用舊--link
標誌)。這些連接須要在兩個方向上建立,所以您能夠看到這對於須要通訊的兩個以上容器而言變得複雜。或者,您能夠操做/etc/hosts
容器中的文件,但這會產生難以調試的問題。
在容器的生命週期中,您能夠動態地將其與用戶定義的網絡鏈接或斷開鏈接。要從默認橋接網絡中刪除容器,您須要中止容器並使用不一樣的網絡選項從新建立容器。
若是容器使用默認網橋,則能夠對其進行配置,但全部容器都使用相同的設置,例如MTU和iptables
規則。此外,配置默認橋接網絡發生在Docker自己以外,而且須要從新啓動Docker。
使用建立和配置用戶定義的網橋 docker network create
。若是不一樣的應用程序組具備不一樣的網絡要求,則能夠在建立時單獨配置每一個用戶定義的網橋。
最初,在兩個容器之間共享環境變量的惟一方法是使用--link
標誌連接它們。用戶定義的網絡沒法實現這種類型的變量共享。可是,有更好的方法來共享環境變量。一些想法:
docker-compose
,而且compose文件能夠定義共享變量。鏈接到同一用戶定義的網橋的容器有效地將全部端口相互暴露。對於能夠訪問不一樣網絡上的容器或非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
查看網絡
有不足之處 但願你們指出相互學習,
本文原創:轉載請註明出處 謝謝!