docker host/bridge

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

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

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

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

docker host/bridge

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

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

[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/bridgecentos

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

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

相關文章
相關標籤/搜索