应用容器引擎之 docker 学习 (十三) docker网络(容器与外网通信 + 跨主机的容器网络)

容器如何访问外网

在这里插入图片描述

外网如何访问容器

在这里插入图片描述

操作过程

1.查看当前iptables的nat表火墙策略
在这里插入图片描述在这里插入图片描述在这里插入图片描述2.
!在这里插入图片描述在这里插入图片描述指定端口映射时
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

跨主机的容器网络

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

macvlan模式

macvlan本身是linxu kernel的模块,本质上是一种网卡虚拟化技术。
其功能是允许在同一个物理网卡上虚拟出多个网卡,通过不同的MAC地址在数据链路层进行网络数据的转发,

一块网卡上配置多个 MAC 地址(即多个 interface),每个interface可以配置自己的IP,
Docker的macvlan网络实际上就是使用了Linux提供的macvlan驱 动。
因为多个MAC地址的网络数据包都是从同一块网卡上传输,所以需要打开网卡的混杂模式ip link set eth1 promisc on

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

[root@server1 ~]# ip link set ens3 promisc on
[root@server1 ~]# ip addr show | grep ens3
[root@server2 ~]# ip link set ens3 promisc on
[root@server2 ~]# ip addr show | grep ens3

注意:如果不开启混杂模式,会导致macvlan网络无法访问外界
不使用vlan时,表现为无法ping通路由,无法ping通同一网络内其他主机

在两台主机上各创建macvlan网络
创建macvlan网络不同于桥接模式,需要指定网段和网关(因为要保证跨主机上网段和网关是相同的),并且都得是真实存在的

在这里插入图片描述server1上

root@server1 ~]# docker network create -d macvlan  --subnet 172.20.0.0/24 --gateway 172.20.0.1 -o parent=ens3 mac_net1
[root@server1 ~]# docker network ls

server2上

[root@server2 ~]# docker network create -d macvlan  --subnet 172.20.0.0/24 --gateway 172.20.0.1 -o parent=ens3 mac_net1
[root@server2 ~]# docker network ls 

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

server1上

[root@server1 ~]# docker run -it --name vm1 --network=mac_net1 --ip=172.20.0.10 ubuntu
root@12542041d9de:/# ip a

server2上

[root@server2 ~]# docker run -it  --name vm1  --network=mac_net1  --ip=172.20.0.11  ubuntu
root@f58a460f3e12:/# ip a
测试:sever2容器vm2中ping server1的vm1容器

在这里插入图片描述实现了不同宿主机上的容器之间的通信
macvlan模式不依赖网桥,所以brctl show查看并没有创建新的bridge
但是查看容器的网络,会看到虚拟网卡对应了一个interface是17,查看宿主机的网络,17正是虚机的eth1网卡

可见,容器的 eth0 就是宿主机的eth1通过macvlan虚拟出来的interface
容器的interface直接与主机的网卡连接,这种方案使得容器无需通过NAT和端口映射就能与外网直接通信(只要有网关)
在网络上看起来与其他独立主机没有区别

在这里插入图片描述在这里插入图片描述macvlan会独占主机的网卡的解决方案

前面说过macvlan会独占主机网卡,但可以使用vlan子接口实现多macvlan网络
vlan可以将物理二层网络划分为4094个逻辑网络,彼此隔离,vlan id取值为1~4094
我们只需要在创建容器时使用vlan子接口就可以i解决:

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述实现了同一宿主机上不同网段容器之间的通信

在这里插入图片描述在这里插入图片描述在这里插入图片描述实现了不同宿主机上的容器之间的通信,也解决了独占网卡的问题。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值