Docker:macvlan实现容器跨主机通信 [十四]
一、什么是macvlan
1、macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,
2、即多个 interface,每个 interface 可以配置自己的 IP。
3、macvlan 本质上是一种网卡虚拟化技术
二、跨主机通信
1、创建macvlan
1、主机luoahong
[root@luoahong ~]# docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
ffbecd2f57ce5be49b95fa05f0a4566f02d6a006d9ab664f44857997d6c0605b
[root@luoahong ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
d766f2526542 bridge bridge local
30b37ec09ff2 host host local
ffbecd2f57ce macvlan_1 macvlan local
ad2616372f01 mywordpress_default bridge local
03062097926d none null local
2、主机luoahong2
[root@luoahong2 ~]# docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1
6b0642df662e35293727542fea1b6d524f0f564f8162d21283d668a778a1d63f
[root@luoahong2 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
05d195b7d60b bridge bridge local
eb998505004d host host local
6b0642df662e macvlan_1 macvlan local
9bd801b589c5 none null local
2、创建测试容器
1、主机luoahong
[root@luoahong ~]# docker run -it --network macvlan_1 --ip=10.0.0.111 busybox:latest /bin/sh
/ #
[root@luoahong ~]# docker run -it --network macvlan_1 --ip=10.0.0.188 busybox:latest /bin/sh
2、主机luoahong2
[root@luoahong2 ~]# docker run -it --network macvlan_1 --ip=10.0.0.112 busybox:latest /bin/sh
3、在主机luoahong2主机上测试
[root@luoahong2 ~]# docker run -it --network macvlan_1 --ip=10.0.0.112 busybox:latest /bin/sh
/ # ping 10.0.0.188
PING 10.0.0.188 (10.0.0.188): 56 data bytes
64 bytes from 10.0.0.188: seq=0 ttl=64 time=5.945 ms
64 bytes from 10.0.0.188: seq=1 ttl=64 time=0.699 ms
64 bytes from 10.0.0.188: seq=2 ttl=64 time=0.553 ms
64 bytes from 10.0.0.188: seq=3 ttl=64 time=0.611 ms
64 bytes from 10.0.0.188: seq=4 ttl=64 time=0.724 ms
^C
--- 10.0.0.188 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.553/1.706/5.945 ms
/ # ping 10.0.0.111
PING 10.0.0.111 (10.0.0.111): 56 data bytes
64 bytes from 10.0.0.111: seq=0 ttl=64 time=4.076 ms
64 bytes from 10.0.0.111: seq=1 ttl=64 time=0.670 ms
64 bytes from 10.0.0.111: seq=2 ttl=64 time=0.793 ms
^C
--- 10.0.0.111 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.670/1.846/4.076 ms
三、注意事项及优缺点
1、两台容器无法通信解决方案
1、主机名相同会导致此故障
解决方案:注意主机名的唯一性
2、网卡开启混杂模式
[root@luoahong ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:e7:b9:46 brd ff:ff:ff:ff:ff:ff
[root@luoahong ~]# ip link set eth0 promisc on
[root@luoahong ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:e7:b9:46 brd ff:ff:ff:ff:ff:ff
[root@luoahong ~]# ip link set eth0 promisc off
[root@luoahong ~]# ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:e7:b9:46 brd ff:ff:ff:ff:ff:ff
2、优缺点总结
1、优点
1、性能比较好,
2、有centos可以把它当作物理机用 占的资源更少
2、缺点
1、每次ip地址需要手动设置
2、两台主机共同用一个ip地址不会报错,导致第三台访问有问题
Docker:macvlan实现容器跨主机通信 [十四]的更多相关文章
- Docker 网络管理及容器跨主机通信
1.网络模式 docker支持四种网络模式,使用--net选项指定: host,--net=host,如果指定此模式,容器将不会获得一个独立的network namespace,而是和宿主机共用一个. ...
- overlay实现容器跨主机通信
本节内容: Docker容器跨主机通信方案 环境信息 升级内核 安装docker 防火墙设置和开启内核转发 安装启动consul 启动Docker 创建overlay network 创建容器 测试容 ...
- Docker容器跨主机通信
默认情况下Docker容器需要跨主机通信两个主机节点都需要在同一个网段下,这时只要两个Docker容器的宿主机能相互通信并且该容器使用net网络模式,改实现方式为网桥模式通信: 除此之外我们还可以通过 ...
- Docker容器跨主机通信之:直接路由方式
一.Docker网络基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界相通,并可以收发数据包:此外,如果不同子网之间要进行通信,需要额外的路由机制. Docker ...
- Docker 网络模式和跨主机通信
Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上.虚拟网桥的工作方式和物理交 ...
- Docker-Docker容器跨主机通信
Docker默认的网络环境下,单台主机上的Docker容器可以通过docker0网桥直接通信,而不同主机上的Docker容器之间只能通过在主机上做端口映射进行通信.这种端口映射方式对很多集群应用来说极 ...
- Docker容器跨主机通信--overlay网络
一.Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvlan: Docker主机网卡接口逻辑上分为多个子接 ...
- Docker容器跨主机通信之:OVS+GRE
一.概述 由于docker自身还未支持跨主机容器通信,需要借助docker网络开源解决方案 OVS OpenVSwich即开放式虚拟交换机实现,简称OVS,OVS在云计算领域应用广泛,值得我们去学习使 ...
- Docker:使用Ambassador进行跨主机间容器通信
转载请注明出处:点我 由于Docker自身的网络的原因,想要在多主机间的容器之间进行通信是比较麻烦的事情.可以利用Ambassador容器来实现这一功能. 基本原理: 利用Ambassador来实现主 ...
随机推荐
- Linux内核同步机制之(五):Read Write spin lock【转】
一.为何会有rw spin lock? 在有了强大的spin lock之后,为何还会有rw spin lock呢?无他,仅仅是为了增加内核的并发,从而增加性能而已.spin lock严格的限制只有一个 ...
- Python Learning: 01
After a short period of new year days, I found life a little boring. So just do something funny--Py ...
- python ----面向对象的三大特性---多态
多态 多态 不同的子类对象调用相同的父类方法,产生不同的执行结果. 以继承和重写父类方法为前提
- python 3.7 安装mysqlclient 错误解决
安装时出现的问题 >pip3.7 install mysqlclientCollecting mysqlclient Using cached https://files.pythonhost ...
- (九)Delete an Index
Now let’s delete the index that we just created and then list all the indexes again: 现在让我们删除刚刚创建的索引, ...
- STM32F103/429串口IAP+Ymodem升级
起因: 串口IAP升级在正点原子的例程中有讲解,正点原子的方法是:在RAM中开辟一个120K的数据空间,用来存放bin文件,bin文件通过串口一次性发送到单片机,然后再实现程序的跳转.但是这种方法在实 ...
- Nginx(三)------nginx 反向代理
Nginx 服务器的反向代理服务是其最常用的重要功能,由反向代理服务也可以衍生出很多与此相关的 Nginx 服务器重要功能,比如后面会介绍的负载均衡.本篇博客我们会先介绍 Nginx 的反向代理,当然 ...
- webpack4配置详解之新手上路初探
前言 经常会有群友问起webpack.react.redux.甚至create-react-app配置等等方面的问题,有些是我也不懂的,慢慢从大家的相互交流中,也学到了不少. 今天就尝试着一起来聊 ...
- 根据json生成c#实体类
vs 编辑->选择性粘贴->将json粘贴为类
- VUE实例方法添加、COOKIE、Token
创建COOKIE const COOKIE = { KEY_TOKEN: 'access_token', KEY_USER: 'nbuser', KEY_PERMISSION: 'nb-permiss ...