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

猜你喜欢

转载自blog.51cto.com/13718453/2557019