一、Docker容器的四种网络类型
哪四种?
- bridge(默认):NAT桥接模式
- none:不分配网络,什么服务都访问不了
- host:与宿主机共享网络,共享主机名,端口共用(宿主机用了的端口,容器也不能用),【网络性能最高】
- container:容器id:与容器xx共享网络,共享主机名、hosts、hostname、端口等….【K8S常用】
1 指定与查看容器网络类型的方法
指定容器网络类型
查看容器网络类型
查看有哪些网络类型
二、使用macvlan实现
优势:
性能比overlay高
不用做端口映射,外界可直接访问
劣势:
IP需要手动指定
1 案例:使用macvlan实现两个centos6.9_ssh容器跨主机网络通信
宿主机信息(虚拟机):
docker01: 10.0.0.11 网关: 10.0.0.2
docker02: 10.0.0.12 网关: 10.0.0.2
宿主机1,2分别创建macvlan
设置网卡为混杂模式【Ubuntu需要设置】
混杂模式是计算机网络中的术语。 是指一台机器的网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。
宿主机1,2分别使用centos7.9_ssh:v2镜像创建容器,并指定为macvlan_1网络
测试,docker exec进入docker01中运行容器,开启抓包,并使用docker02中的容器ping它
通过xshell或者mobaxterm可以直接ssh到容器中 (PS:并没有 -p 22端口)
实际测试宿主机并不能ssh到容器,显示No route to host,但是物理机可以连接
三、使用overlay实现
优势:
可以自动分配ip地址
劣势:
需要做端口映射才能访问容器服务
overlay参考:https://www.cnblogs.com/CloudMan6/p/7270551.html
1 案例:使用overlay实现两个centos6.9_ssh容器跨主机网络通信
docker01启动consul
consul是一个key:value类型的存储数据库
docker01,02上设置daemon.json文件
修改docker.service文件
因为daemon.json中的hosts项与docker.service中的-H参数冲突,需要去掉
重启docker服务
测试consul是否搭建成功
docker01,02创建overlay网络
启动容器
测试容器间网络
2 Overlay的网络访问流程图