免費網(wǎng)站建設(shè)php備案查詢站長之家
Docker 在網(wǎng)絡(luò)管理這塊提供了多種的網(wǎng)絡(luò)選擇方式,他們分別是橋接網(wǎng)絡(luò)
、主機網(wǎng)絡(luò)
、覆蓋網(wǎng)絡(luò)
、MACLAN 網(wǎng)絡(luò)
、無橋接網(wǎng)絡(luò)
、自定義網(wǎng)絡(luò)
。
1-無橋接網(wǎng)絡(luò)(None Network)
當使用無橋接網(wǎng)絡(luò)時,容器不會分配 IP 地址,也不會連接到主機網(wǎng)絡(luò)。這對于特殊應(yīng)用或需要完全手動配置網(wǎng)絡(luò)設(shè)置的情況有用。在這個容器下,除了lo
本地環(huán)回網(wǎng)絡(luò),不會有其他的網(wǎng)卡,一些對安全性比較高并且不需要聯(lián)網(wǎng)的應(yīng)用可以使用none network
網(wǎng)絡(luò)。
一般來說使用none network
的情況并不多,特殊應(yīng)用或需要完全手動配置網(wǎng)絡(luò)設(shè)置的情況有用。
2-主機網(wǎng)絡(luò)(Host Network)
使用主機網(wǎng)絡(luò)時,容器與主機共享網(wǎng)絡(luò)命名空間,它們使用主機的網(wǎng)絡(luò)堆棧,不需要 NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)。這可以提高容器訪問網(wǎng)絡(luò)資源的性能,但可能會引入一些安全風險,因為容器共享主機的網(wǎng)絡(luò)棧。
使用host network
需要考慮端口沖突問題,有些已經(jīng)host
上已經(jīng)使用的端口,就無法再使用了。
3-橋接網(wǎng)絡(luò)(Bridge Network)
橋接網(wǎng)絡(luò)是 Docker 中最常用的網(wǎng)絡(luò)類型。在橋接網(wǎng)絡(luò)中,每個容器分配一個唯一的 IP 地址,容器可以相互通信,也可以通過主機進行外部網(wǎng)絡(luò)通信。這是默認的網(wǎng)絡(luò)類型。
我們通過如下命令可以看到橋接網(wǎng)絡(luò)的相關(guān)設(shè)置:
docker network inspect bridge
可以看到橋接網(wǎng)絡(luò)的子網(wǎng)是172.17.0.0/16
,容器分配的 IP 有172.17.0.3
、172.17.0.4
容器之間可以相互通信。
通過brctl
,可以管理 Linux 的橋接設(shè)備,centos
中下載方式與使用方式如下:
#下載方式
sudo yum install bridge-utils # 對于 CentOS 6
sudo dnf install bridge-utils # 對于 CentOS 8 或 Fedora
#顯示橋接設(shè)備
brctl show
可以看到容器中網(wǎng)卡的一端是掛載在橋接網(wǎng)卡docker0
上的,通過這種形式實現(xiàn)網(wǎng)絡(luò)鏈接的目的。
4-用戶定義網(wǎng)絡(luò)(Custom Network)
我們可以根據(jù)業(yè)務(wù)需求,自己定義相關(guān)的網(wǎng)絡(luò),docker
提供了三種用戶定義網(wǎng)絡(luò)驅(qū)動,它們分別是:bridge
、overlay
、macvlan
。其中overlay
、macvlan
用于創(chuàng)建跨主機的網(wǎng)絡(luò)。
我們可以使用如下命令來創(chuàng)建一個自定義網(wǎng)絡(luò),其子網(wǎng)為 192.168.0.0/24
, 網(wǎng)關(guān)為192.168.0.1
,容器網(wǎng)絡(luò)名為net_2
。
docker network create --subnet 192.168.0.0/24 --gateway 192.168.0.1 --driver bridge net_2
繼而使用net_2網(wǎng)絡(luò)創(chuàng)建兩個新的容器,創(chuàng)建容器命令如下
docker run -it --network=net_2 --name=ub1 ubuntu /bin/bash
docker run -it --network=net_2 --name=ub2 ubuntu /bin/bash
在新的容器中安裝網(wǎng)絡(luò)查看及ping命令,可以獲取如下網(wǎng)絡(luò)信息
apt-get install -y net-tools
apt-get install -y iputils-ping
彼此之間可以ping通,實現(xiàn)自定義網(wǎng)絡(luò)的通信。
使用docker ps
,可以看到使用系統(tǒng)自定義的橋接網(wǎng)絡(luò)容器700b
,進入容器后發(fā)現(xiàn)他使用的是172.17.0.0/12網(wǎng)段。
若想使得橋接網(wǎng)絡(luò)與自定義網(wǎng)絡(luò)容器之間可以通信,除了關(guān)注防火墻路由轉(zhuǎn)發(fā)之外,還需要使用如下命令:
docker network connect net_2 700b
此時再進入容器,會發(fā)現(xiàn)容器中多了一個網(wǎng)卡,并且可以與不同網(wǎng)段之間容器進行通信。