docker容器间网络通信
一、单机下两个容器间网络通信
1、两个namespace是通过 veth对实现通信的,就像 veth1和veth2是一对,能正常通信
2、container1和container2两个容器属于不同的namespace,所以通过veth对实现通信,实际上veth2和veth4是属于物理机的网络接口,veth2、veth4与docker0是能正常通信的,所以保证了container1和container2能正常通信
container1(veth1) ----> veth2 ----> docker0 ----> veth4 ----> container2(veth3)
二、多机下两个容器间网络通信
1、创建etcd集群,保存overlay网络信息
2、创建overlay网络
docker_gwbridge是随着overlay网络的新建自动生成的,用于连接到外网,overlay用于容器间跨宿主机的通信
附加:
1、docker network create mybridge -d bridge
docker 自己新建了网络(DRIVER是bridge),容器属于该网络时,则不用 --link 也能通过容器名 ping通别的容器, 如果是属于默认的bridge,则需要使用 --link才能有解析作用
2、创建一个新的容器就会开辟一个新的namespace, 千万别和 bridge网络搞混淆了
3、bridge只是一种网络模式,属于这种网络模式的容器会得到一个ip地址
4、namespace与namespace通讯是通用 veth 网络对实现的, 容器与容器通讯就好比namespace与namespace通讯