实验环境:
docker01 | 192.168.1.70 |
---|---|
docker02 | 192.168.1.50 |
关闭防火墙和禁用selinux,更该主机名:
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
[[email protected] ~]# setenforce 0
[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl restart docker
[[email protected] ~]# hostnamectl set-hostname docker01
[[email protected] ~]# su -
macvlan的单网络通信
1)打开网卡的混杂模式
//需要在docker01和docker02上都进行操作
[[email protected] ~]# ip link set ens33 promisc on
[[email protected] ~]# ip link show ens33
2)在docker01上创建macvlan网络
在这里插入代码片[[email protected] ~]# docker network create -d macvlan --subnet 172.22.16.0/24 --gateway 172.22.16.1 -o parent=ens33 mac_net1
[[email protected] ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
e6860af70e90 mac_net1 macvlan local
PS:-o parent=绑定在哪张网卡之上
3)基于创建的macvlan网络运行一个容器
[[email protected] ~]# docker run -itd --name bbox1 --ip 172.22.16.10 --network mac_net1 busybox
4)在docker02上创建macvlan网络,注意与docker01上的macvlan网络一摸一样
[[email protected] ~]# docker network create -d macvlan --subnet 172.22.16.0/24 --gateway 172.22.16.1 -o parent=ens33 mac_net1
5)在docker02上,基于创建的macvlan网络运行一个容器,验证与docker01上容器的通信
[[email protected] ~]# docker run -itd --name bbox2 --network mac_net1 --ip 172.22.16.20 busybox
macvlan的多网络通信
1)docker01和docker02验证内核模块8021q封装
macvlan需要解决的问题:基于真实的ens33网卡,生产新的虚拟网卡
[[email protected] ~]# modinfo 8021q
//如果内核模块没有开启,运行下边命令导入一下
[[email protected] ~]# modprobe 8021q
2)基于ens33创建虚拟网卡
//修改ens33网卡配置文件:
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# vim ifcfg-ens33
//修改:
BOOTPROTO=manual //手动模式
//手动添加虚拟网卡配置文件
[[email protected] network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33.10
//PS:-p 保留源文件或目录的属性
[[email protected] network-scripts]# vim ifcfg-ens33.10
BOOTPROTO=none
IPADDR=192.168.10.10
PREFIX=24
GATEWAY=192.168.10.1
NAME=ens33.10
DEVICE=ens33.10
ONBOOT=yes
VLAN=yes
//PS:这里注意,IP要和ens33网段做一个区分,保证网关和网段IP的一致性,设备名称和配置文件的一致性,并且打开VLAN支持模式
//创建第二个虚拟网卡配置文件
[[email protected] network-scripts]# cp -p ifcfg-ens33.10 ifcfg-ens33.20
[[email protected] network-scripts]# vim ifcfg-ens33.20
BOOTPROTO=none
IPADDR=192.168.20.20
PREFIX=24
GATEWAY=192.168.20.1
NAME=ens33.20
DEVICE=ens33.20
ONBOOT=yes
VLAN=yes
3)docker01上的操作,启用创建的虚拟网卡
[[email protected] network-scripts]# ifup ifcfg-ens33.10
[[email protected] network-scripts]# ifup ifcfg-ens33.20
4)基于虚拟网卡,创建macvlan网络
[[email protected] ~]# docker network create -d macvlan --subnet 172.16.10.0/24 --gateway 172.16.10.1 -o parent=ens33.10 mac_net10
[[email protected] ~]# docker network create -d macvlan --subnet 172.16.20.0/24 --gateway 172.16.20.1 -o parent=ens33.20 mac_net20
5)基于创建的虚拟网卡,创建macvlan网络
[[email protected] ~]# docker network create -d macvlan --subnet 172.16.10.0/24 --gateway 172.16.10.1 -o parent=ens33.10 mac_net10
[[email protected] ~]# docker network create -d macvlan --subnet 172.16.20.0/24 --gateway 172.16.20.1 -o parent=ens33.20 mac_net20
6)docker02上也创建虚拟网卡,并启用
[[email protected] ~]# scp /etc/sysconfig/network-scripts/ifcfg-ens33.10 /etc/sysconfig/network-scripts/ifcfg-ens33.20 [email protected]:/etc/sysconfig/network-scripts/
[[email protected] network-scripts]# vim ifcfg-ens33
BOOTPROTO=manual
[[email protected] network-scripts]# vim ifcfg-ens33.10
BOOTPROTO=none
IPADDR=192.168.10.11
PREFIX=24
GATEWAY=192.168.10.1
NAME=ens33.10
DEVICE=ens33.10
ONBOOT=yes
VLAN=yes
[[email protected] network-scripts]# vim ifcfg-ens33.20
BOOTPROTO=none
IPADDR=192.168.20.21
PREFIX=24
GATEWAY=192.168.20.1
NAME=ens33.20
DEVICE=ens33.20
ONBOOT=yes
VLAN=yes
[[email protected] network-scripts]# ifup ifcfg-ens33.10
[[email protected] network-scripts]# ifup ifcfg-ens33.20
7)基于macvlan网络创建容器,并指定IP地址,不过这里要注意,运行的同期与网络对应的网段相符合,还需要注意IP地址的唯一性
//docker01
[[email protected] ~]# docker run -itd --name bbox10 --network mac_net10 --ip 172.16.10.10 192.168.1.70:5000/busybox:v1
[[email protected] ~]# docker run -itd --name bbox20 --network mac_net20 --ip 172.16.20.20 192.168.1.70:5000/busybox:v1
//docker02
[[email protected] ~]# docker run -itd --name bbox11 --network mac_net10 --ip 172.16.10.11 192.168.1.70:5000/busybox:v1
[[email protected] ~]# docker run -itd --name bbox21 --network mac_net20 --ip 172.16.20.21 192.168.1.70:5000/busybox:v1
8)将VMware虚拟机的网络改为桥接
9)进入容器测试通信
在docker01上进入容器bbox10和docker02上的bbox11进行通信
在docker01上进入容器bbox20和docker02上的bbox21进行通信
[[email protected] ~]# docker exec -it bbox10 /bin/sh
/ # ping 172.16.10.11
PING 172.16.10.11 (172.16.10.11): 56 data bytes
64 bytes from 172.16.10.11: seq=0 ttl=64 time=0.668 ms
64 bytes from 172.16.10.11: seq=1 ttl=64 time=0.335 ms
[[email protected] ~]# docker exec -it bbox20 /bin/sh
/ # ping 172.16.20.21
PING 172.16.20.21 (172.16.20.21): 56 data bytes
64 bytes from 172.16.20.21: seq=0 ttl=64 time=0.584 ms
64 bytes from 172.16.20.21: seq=1 ttl=64 time=0.365 ms
操作系统与I/O多路复用Everything is File在Linux中所有的I/O设备都被抽象为了文件这个概念,一切皆文件(Everything is File),磁盘、网络数据、终端,甚至进程间通信工具管道pipe等都被当做文件对待。所有的I/O操作也都可以通过文件读写来实现,这一非常优雅的抽象可以让程序员使用一套接口就能对所有外设I/O操作。常用的I/O操作接口一般有以下几类:1)打开文件,open;2)改变读写位置,seek;3)文件读写,read、write;4)关闭文件,c
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <script type="text/javascript"> function isEmail(str){ if(str==null) ...
一、下载 GLM去官网下载。这里附上一个GitHub的下载链接。是glm 0.9.8.0版本。二、GLM 配置下载完后解压一下,把整个GLM文件夹复制到你的项目所在文件夹下,如下图所示。这个文件夹是glm父文件夹,不是子文件夹,里面的文件应该有这些。可以看到,glm父文件夹下还有一个glm子文件夹。然后,你需要进行一下链接。右击Project3...
为什么80%的码农都做不了架构师?>>> ...
深入浅出之正则表达式前言: 半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程。于是一直想把他翻译过来。这个愿望直到这个五一长假才得以实现,结果就有了这篇文章。关于本文的名字,使用“深入浅出”似乎已经太俗。但是通读原文以后,觉得只有用“深入浅出
某天电脑关机重启后,Google Chrome报出以下错误:C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具。解决方案:步骤1:进入chrome的安装路径C:\Progra...
必填字段应该达到的效果是:不填-> 提示应该要填写填写-> 对了 -> 框变绿 -> 错了 -> 框变红 提示错误原因非必填字段应达到的效果是:不填-> 不校验填了-> 校验 -> 正确绿框 错误红框填了删除-> 不校验方法一、自定义校验规则 validator:(rule,val...
记录一下:yolov3转换caffe-虚拟机安装caffe1. 系统环境:ubuntu16.04第一步:下载 caffe ,可以通过CSDN下载,需要积分,(花钱买时间)第二步: ubuntu环境准备这个地方写了个shell(后面再搭环境就简单了):sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-de...
springcloud 第1课 :Rest学习环境搭建—服务提供者springcloud 第2课 :Rest学习环境搭建—服务消费者springcloud 第3课 :Eureka是什么springcloud 第4课 :Eureka服务注册、信息配置、自我保护机制springcloud 第5课 :Eureka集群环境配置springcloud 第6课 :Ribbon实现负载均衡springcloud 第7课 :Feign负载均衡springcloud 第8课 :Hystrix服务熔断sprin
2019独角兽企业重金招聘Python工程师标准>>> ...
1 模块简介asyncio模块作为一个临时的库,在Python 3.4版本中加入。这意味着,asyncio模块可能做不到向后兼容甚至在后续的Python版本中被删除。根据Python官方文档,asyncio通过coroutines、sockets和其它资源上的多路复用IO访问、运行网络客户端和服务端以及其它相关的原始服务等提供了一种单线程并发应用的架构。本文并不能覆盖所有关于...