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

相关文章
相关标签/搜索