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来实现主 ...
随机推荐
- Nginx反向代理实现IP访问分流
通过Nginx做反向代理来实现分流,以减轻服务器的负载和压力是比较常见的一种服务器部署架构.本文将分享一个如何根据来路IP来进行分流的方法. 根据特定IP来实现分流 将IP地址的最后一段最后一位为0或 ...
- 2016 西普杯丶天津CTF预选赛(3/6)
哆啦A梦(图片隐写) 格式:SimCTF{ } 解:放到kail中binwalk一下(Binwalk是一个固件的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程用处.简单易用,完全自动化脚本,并 ...
- GIL:全局解释器锁 VS 用户程序锁
既然有了GIL锁,CPython还要多线程干什么? ''' GIL:全局解释器锁的来历 四核:同一时刻真正有四个任务在运行,多核的意义在于此 单核:看上去是并发的,因为进行了上下文切换,单核永远是串行 ...
- Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上的应用)
目录 Python5大擅长领域 WEB开发 网络编程 科学运算 GUI图形开发 运维自动化 Python在世界上的知名应用 国外 谷歌 CIA NASA YouTube Dropbox Instagr ...
- Elasticsearch通关教程(一): 基础入门
简介 Elasticsearch是一个高度可扩展的.开源的.基于 Lucene 的全文搜索和分析引擎.它允许您快速,近实时地存储,搜索和分析大量数据,并支持多租户. Elasticsearch也使用J ...
- Java里的不能与无用.
不能获取参数名 , 导致函数的参数名无用. 在MyBatis的方法里. 参数名是无法反射得到的. 导致必须使用注解,指定参数名. 这样的话. 参数名就没有了意义.
- gorose使用示例
package main import ( "fmt" "github.com/gohouse/gorose" //import Gorose _ " ...
- 选择语句--switch
switch语句 格式: 执行流程 首先计算出表达式的值 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束. 最后,如果所有的case都和表达式的值 ...
- vue脚手架搭建移动端项目--flexible.js
通过命令行 node -v 查看是否安装node环境 在 nodejs 和 webpack已安装的前提下,随便一个文件夹下,输入命令行 npm install vue-cli -g 安装完成后,通过 ...
- Centos下安装Mysql异常
问题1: [root@localhost install-files]# rpm -ivh MySQL-server-5.6.27-1.el6.x86_64.rpm --nosignaturePrep ...