Docker(八)--docker网络--跨主机容器网络(macvlan)

1. 理论

- 跨主机网络解决方案
	docker原生的overlay和macvlan
- 第三方的flannel、weave、calico
	众多网络方案是如何与docker集成在一起的
		libnetwork 	docker容器网络库
		CNM (Container Network Model)这个模型对容器网络进行了抽象

- CNM分三类组件
	Sandbox:容器网络栈,包含容器接口、dns、路由表。(namespace)
	Endpoint:作用是将sandbox接入network (veth pair)
	Network:包含一组endpoint,同一network的endpoint可以通信。

2. macvlan网络方案实现

- Linux kernel提供的一种网卡虚拟化技术。(内核自带)
	无需Linux bridge,直接使用物理接口,性能极好。
- 下面步骤的操作在截图中
	- 在两台docker主机上各添加一块网卡,打开网卡混杂模式:
	- 
	- 在两台docker主机上各创建macvlan网络:
	- 
	- macvlan网络结构分析:
		没有新建linux bridge
		容器的接口直接与主机网卡连接,无需NAT或端口映射。
		[root@server2 ~]# brctl show
			bridge name	bridge id		STP enabled	interfaces
			br-283cf1fc96c1		8000.02426d0e4f33	no		
			docker0		8000.024257e101e8	no		


	- macvlan会独占主机网卡,但可以使用vlan子接口实现多macvlan网络
	- vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id取值为1~4094。

	- macvlan网络间的隔离和连通
		macvlan网络在二层上是隔离的,所以不同macvlan网络的容器是不能通信的。
		可以在三层上通过网关将macvlan网络连通起来。
		docker本身不做任何限制,像传统vlan网络那样管理即可。

2.1 前期设置,设置俩个网卡

[root@server1 ~]# cd harbor/
[root@server1 harbor]# docker-compose down ##换成stop

在这里插入图片描述

server1和server2都添加成俩个网卡
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 实现不同主机之间通信

##server1和server2同样的操作
[root@server1 ~]# ip link set up eth1
[root@server1 ~]# ip link set eth1 promisc on  ##打开混杂模式PROMISC
[root@server1 ~]# ip addr show  eth1  
36: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:64:dd:fd brd ff:ff:ff:ff:ff:ff
    inet6 fe80::5054:ff:fe64:ddfd/64 scope link 
       valid_lft forever preferred_lft forever



[root@server1 ~]# docker network  create -d macvlan --subnet 172.21.0.0/24 --gateway=172.21.0.1 -o parent=eth1 mac_net1
 ##使用eth1网卡
[root@server1 ~]# docker inspect  mac_net1 | grep "parent"
            "parent": "eth1"  
[root@server1 ~]# 



[root@server1 ~]# docker run -it --rm --network mac_net1 --ip 172.21.0.11 busybox
WARNING: IPv4 forwarding is disabled. Networking will not work.
/ # ip addr 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
37: eth0@if36: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:15:00:0b brd ff:ff:ff:ff:ff:ff
    inet 172.21.0.11/24 brd 172.21.0.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # ping 172.21.0.12
PING 172.21.0.12 (172.21.0.12): 56 data bytes
64 bytes from 172.21.0.12: seq=0 ttl=64 time=0.375 ms

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id取值为1~4094。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. docker network子命令

- docker network子命令
	connect		连接容器到指定网络
	create			创建网络
	disconnect	断开容器与指定网络的连接
	inspect		显示指定网络的详细信息
	ls			显示所有网络
	rm			删除网络
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Studying!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值