docker host/bridge

[root@node01 ~]# docker network list
docker host/bridge

Host 模式,使用參數 –net=host 指定。
啓動的容器如果指定了使用host模式,那麼新創建的容器不會創建自己的虛擬網卡,而是直接使用宿主機的網卡和IP地址,因此在容器裏面查看到的IP信息就是宿主機的信息,訪問容器的時候直接使用宿主機IP+容器端口即可,不過容器的其他資源們必須文件系統、系統進程等還是和宿主機保持隔離。
此模式的網絡性能最高,但是各容器之間端口不能相同,適用於運行容器端口比較固定的業務。
爲避免端口衝突,先刪除所有的容器:


[root@node01 nginx-web1]# docker run -d --name nginxweb1 --net=host sun/nginx/nginx-base-centos:v1

docker host/bridge
[root@node01 nginx-web1]# docker exec -it nginxweb1 bash

docker host/bridge

僅主機:docker ifconfig 看到的信息與宿主機ifconfig 信息一致

None模式,使用參數 –net=none 指定
在使用none 模式後,Docker 容器不會進行任何網絡配置,其沒有網卡、沒有IP也沒有路由,因此默認無法與外界通信,需要手動添加網卡配置IP等,所以極少使用,
命令使用方式:

[root@node01 nginx-web1]# docker run -d --name nginxweb3 --net=none sun/nginx/nginx-base-centos:v1
9346494fe369e6b39d2ca19ef5d75f2771837841a0da4baf8f340460baec614c
[root@node01 nginx-web1]# docker exec -it nginxweb3 bash
[root@9346494fe369 /]# ifconfig
docker host/bridge



bridge模式:
docker的默認模式即不指定任何模式就是bridge模式,也是使用比較多的模式,此模式創建的容器會爲每一個容器分配自己的網絡 IP等信息,並將容器連接到一個虛擬網橋與外界通信。

docker誇主機互聯之簡單實現:
誇主機互聯是說A宿主機的容器可以訪問B主機上的容器,但是前提是保證各宿主機之間的網絡是可以相互通信的,然後各容器纔可以通過宿主機訪問到對方的容器,實現原理是在宿主機做一個網絡路由就可以實現A宿主機的容器訪問B主機的容器的目的,複雜的網絡或者大型的網絡可以使用google開源的k8s進行互聯

A:--bip=10.20.201.254/24
B:--bip=10.20.202.1/24

服務器A更改網段:
[root@linux-docker1 ~]# vim /usr/lib/systemd/system/docker.service
14 ExecStart=/usr/bin/dockerd -H fd:// --bip=10.20.202.1/24 --containerd=/run/containerd/containerd.sock

docker host/bridge

重啓docker服務並驗證網卡:
systemctl daemon-reload
systemctl restart docker

docker host/bridge

docker host/bridge

docker0 是容器的網關
docker host/bridge

docker host/bridge

服務器B更改網段:
docker host/bridge

docker host/bridge

A:--bip=10.20.201.254/24 10.20.201.1
B:--bip=10.20.202.1/24 10.20.202.2

[root@7379c05fe291 /]# yum install traceroute -y
docker host/bridge

A:192.168.100.10 --bip=10.20.201.254/24 10.20.201.1
B:192.168.100.20 --bip=10.20.202.1/24 10.20.202.2

添加靜態路由:A
iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT
route add -net 10.20.202.0/24 gw 192.168.100.20 #ping對方容器IP

添加靜態路由:B
iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT
route add -net 10.20.201.0/24 gw 192.168.100.10 #ping對方容器IP

容器互ping 測試:
docker host/bridge

docker host/bridge

traceroute 10.20.201.1
docker host/bridge

tcpdump -i eth0 -vnn icmp

docker host/bridge

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章