四种网络类型:
None(空):
--network=none
关闭了网络功能,不为容器配置任何网络功能,--net=noneContainer:
--network=container
与另一个运行中的容器共享Network Namespace,--net=container:containerID(K8S)Host(主机):
--network=host
与宿主机共享Network Namespace,--network=hostBridge(桥接式网络)(默认):
--network=bridge
Docker设计的NAT网络模型
[root@docker ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
d09627a7eb3b bridge bridge local
06b2e9e8d5c1 host host local
0013a82b65e3 none null local
Docker跨主机容器之间的通信macvlan
默认一个物理网卡,只有一个物理地址,虚拟多个mac地址
测试跨主机容器之间能够互相通信先创建好俩台主机分别启动容器
- 先分别于俩台逐渐间创建macvlan网络
docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
命令说明:
--driver macvlan 创建网络类型为macvlan
--subnet 指定网段
--gateway 指定网关
-o parent=eth0 创建于哪块网卡
macvlan_1 创建好macvlan的名称
[root@docker ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
5621330b7be9 bridge bridge local
06b2e9e8d5c1 host host local
447af99bbee4 macvlan_1 macvlan local
0013a82b65e3 none null local
[root@docker01 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
b14f863c58c6 bridge bridge local
06b2e9e8d5c1 host host local
582a40a0b858 macvlan_1 macvlan local
0013a82b65e3 none null local
设置eth0的网卡为混杂模式(ubuntu中需要设置)
ip link set eth1 promisc on
- 俩台主机分别创建使用macvlan网络的容器
docker run -it --network macvlan_1 --ip=10.0.0.200 busybox
docker run -it --network macvlan_1 --ip=10.0.0.201 busybox
在容器内相互ping对方ip,发现可以正常连通