Docker網(wǎng)絡(luò)模式
查看容器的詳細(xì)信息(可以查看網(wǎng)絡(luò)類型Networks)
docker container inspect 容器ID
[root@controller ~]# docker network ls
NAME DRIVER SCOPE
bridge bridge local
host host local
none null local
-
bridge(橋接式網(wǎng)絡(luò))(默認(rèn))
啟動容器時,首先會在主機(jī)上創(chuàng)建一個docker0的虛擬網(wǎng)橋甜无,相當(dāng)于交換機(jī)筋夏,同時自動分配一對網(wǎng)卡設(shè)備蹬铺,一半在容器(eth0),一半在宿主機(jī)褐桌,并且還關(guān)聯(lián)到了docker0齐饮,從而進(jìn)行連接捐寥。
每創(chuàng)建一個容器啟動時自動分配地址以后會生成iptables規(guī)則,iptables -t nat -vnL 查看
postrouting 祖驱,從任何接口進(jìn)來,只要不從docker0跳出去握恳,源地址任何網(wǎng)絡(luò)地址,無論到達(dá)任何主機(jī)捺僻,都要做地址偽裝乡洼,自動選擇主機(jī)物理源地址
iptables -t nat -vnL|grep docker
Chain POSTROUTING (policy ACCEPT 156 packets, 9745 bytes)
pkts bytes target prot opt in out source destination
30 1886 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0
查看方法:
[root@controller ~]# brctl show
bridge name bridge id STP enabled interfaces
brq4f42285e-8b 8000.000c29e8da73 no eth0
tap87373210-e1
docker0 8000.024233cedda5 no veth1fc99ac
可以看到和本地連接
軟件包:
yum install bridge-utils -y
Container(K8S會常用)
- 與另一個運行得容器共用一個網(wǎng)絡(luò)Network Namespace
--network=container:容器ID
例子:
默認(rèn)先起一個容器:
docker run -d phpwind:v1
隨便啟一個容器共用phpwind:v1的網(wǎng)絡(luò)
docker run -it --network container:2735c9b78546 nginx
這時nginx容器和phpwind的ip都是相同的 ,同樣誰先占用80端口就是誰的
##查看網(wǎng)絡(luò)類型
docker inspect nginx容器ID |grep -i network
NetworkMode
-
host (主機(jī))
- 與宿主機(jī)共用一個網(wǎng)絡(luò)
--network=host
例子:(使用后不需要做端口映射)
性能最高匕坯,端口誰先占用就是誰的
docker run --network=host -d phpwind:v1
-
none (空)
- 不為容器配置任何網(wǎng)絡(luò)功能
--network=none
不使用任何網(wǎng)絡(luò)類型
例子:
docker run --network=none -d phpwind:v1 /bin/bash
沒有網(wǎng)絡(luò)適合聯(lián)系使用束昵,只有基礎(chǔ)命令