bridge

Docker入门之docker-compose

我是研究僧i 提交于 2021-02-20 02:50:19
  参考:https://blog.51cto.com/9291927/2310444   一,Docker-compose简介   1,Docker-compose简介   Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡。 Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。 使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身

convert an std::string to a Swift String

天大地大妈咪最大 提交于 2021-02-19 04:24:26
问题 Short version: how can I convert an std::string (object returned by a .cpp function called from a .Swift file using bridging) to a Swift String ? Long version: I have a library written in C++ and I have to call some code using Swift. I created a bridge, adding two files in my Xcode projects: a bridging header, which allows Swift to call C functions (afaik Swift can't call C++ functions directly, so it needs to pass through C functions) //file bridgingHeader.h const char * getLastOpenedFile();

STP生成树协议

杀马特。学长 韩版系。学妹 提交于 2021-02-18 02:24:03
问题 为了提高网络的可用性,需要进行冗余和备份。但是冗余路径会产生环路 环路会导致以下问题 广播风暴 :由于交换机会对广播、多播、和未知目标MAC的单播包进行泛洪,在存在环路的情况下,很短的时间内就会产生风暴 多帧拷贝 、 MAC地址表不稳定 :当交换机刚刚启动时,MAC地址表是空的,所以,所有的单播帧都会进行泛洪操作。但是如果存在环路的话,交换机在特定情况下,会从不同的接口收到相同的MAC地址,这样的话,MAC地址表将不稳定 STP (spanning tree protocal,IEEE802.1D)就是通过软件防止环路的产生,通过逻辑的禁用接口,使得环路在逻辑上不存在;当线路出现故障时,将禁用的接口启用,使得网络能够发挥物理冗余路径带来的高可用性 STP协议的工作原理 STP协议的原则如下: 每个广播域中只有一个根网桥,根网桥的接口都是指定接口 每一个非根网桥上都有一个根接口,根接口就是到达根网桥最近(带宽最高,开销最小)的接口 每个网段中只有一个指定接口(发送方的桥ID较小的,或者端口优先级较小,或者端口ID较小的) 非指定接口不使用 假如上图的Switch X是根网桥,那么它的两个接口都是指定接口;Switch Y是非根网桥,由于100BASE的带宽更高,所以Switch Y上面的接口是根接口;上下两个segement中,s1和s2都已经有指定接口了,所以Switch

交换机生成树——STP

馋奶兔 提交于 2021-02-16 05:43:24
STP(Spanning Tree Protocol)是用来避免数据链路层出现逻辑环路的协议(现实中,我们为了给通信做备份,交换机之间多条链路互连 有些物理环路是无法避免的) STP是交换机的功能:: 交换机之间多条链路互连时,造成环路,,环路会引起 广播风暴, 网络中的主机会收到重复数据帧,,而STP通过阻塞端口,,来消除网络环路,并实现链路备份的作用。 STP配置的过程: 1.交换机上运行的STP通过BPUD信息的交互,选择跟交换机,( BPUD 包括桥ID、路径开销、端口ID、计时器参数。 ) 2.然后每台非交换机选择与跟交换机通信的根端口, 3.之后,每个网段选择用来转发数据至跟交换机的指定端口, 4.最后剩余端口被阻塞 非根桥(ALTE:替代(阻塞)端口,DESI:指定端口,ROOT:指定端口) 接下来,通过实验来进一步了解: 实验拓扑: 实验步骤:   1.基本配置 根据实验拓扑图,,在交换机上启用STP(华为交换机默认启用MSTP),将交换机的STP模式更改为普通生成树STP。 S2、S3、S4同S1。 配置完成后,默认情况下虚等30s(生成树重新计算的时间15s Forward Delay加上15s Learning状态时间),在使用display stp命令查看S1的生成树状态。 可以看到S1的E 0/0/1端口为丢弃状态、端口角色 Alternate,即替代端口

H3C交换机配置链路聚合

蹲街弑〆低调 提交于 2021-02-14 09:19:20
<H3C>system-view //进入配置模式 动态链路聚合: [SW]dis cu //查看所有配置端口信息 [SW]int Bridge-Aggregation 1 //创建链路聚合组端口1 [SW-Bridge-Aggregation1]link-aggregation mode dynamic //链路聚合模式动态 [SW-Bridge-Aggregation1]interface gigabitethernet 1/0/1 //进入网口 [SW-Ethernet1/0/1]port link-aggregation group 1 //加入链路聚合组 [SW-Ethernet1/0/1]quit //退出 [SW]interface Ethernet(gigabitethernet) 1/0/2 [SW-Ethernet1/0/2]port link-aggregation group 1 //加入链路聚合组 [SW-Ethernet1/0/1]quit [SW-Bridge-Aggregation1]port link-type trunk //改为trunk模式 [SW-Bridge-Aggregation1]port trunk permit vlan all //所有的vlan适用 删除链路聚合: 步骤1 将原来已加入的聚合组的端口退出 步骤2 删除聚合组

基于NFS共享存储实现KVM虚拟主机动态迁移

邮差的信 提交于 2021-02-12 06:33:34
在KVM中可以将运行中的虚拟机从一个KVM主机迁移到另一个KVM主机中运行,而不需要任何停机时间。如果两个KVM主机都能够访问相同的存储池,那么实时迁移工作就很好了。要使存储池在KVM主机上都可访问,您需要使用NFS或GFS2文件系统(集群文件系统)。在本例中,我使用NFS文件系统来存储VM映像文件。在迁移过程中,VM的“内存”内容将被复制到目标KVM主机,而在某个时间点上,将发生迁移VM。注意,当您在KVM主机上共享文件系统时,将不会在网络上传输VM的磁盘映像,因为两个KVM主机都可以访问相同的存储池。 迁移介绍:迁移是指将在KVM上运行的虚拟机系统转移到其他物理机的KVM上运行 静态迁移:在虚拟机关机的情况迁移 动态迁移:在虚拟机上服务正常运行的情况下迁移,要基于共享存储 动态迁移特点: 不会对最终用户造成明显影响 仅有非常短暂的停机时间 1、 设置3台服务器主机名、配置 /etc/hosts 保证网络连接 2、 两台主机的KVM连接NFS共享存储 3、 在源主机的KVM中新建虚拟机并安装系统 4、 连接KVM、并进行迁移 首先将所有的主机关闭防火墙 [root@localhost ~]# iptables -F [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# setenforce 0

H5之外部浏览器唤起微信分享

萝らか妹 提交于 2021-02-11 10:58:55
最近在做一个手机站,要求点击分享可以直接打开微信分享出去。而不是jiathis,share分享这种的点击出来二维码。在网上看了很多,都说APP能唤起微信,手机网页实现不了。也找了很多都不能直接唤起微信。 总结出来一个可以直接唤起微信的。适应手机qq浏览器和uc浏览器。 下面上代码,把这些直接放到要转发的页面里就可以了: html部分: < script src= "mshare.js"> </ script>//引进mshare.js < button data-mshare= "0">点击弹出原生分享面板 </ button> < button data-mshare= "1">点击触发朋友圈分享 </ button> < button data-mshare= "2">点击触发发送给微信朋友 </ button> js部分: < script> var mshare = new mShare({ title: 'Lorem ipsum dolor sit.', url: 'http://m.ly.com', desc: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quaerat inventore minima voluptates.', img: 'http://placehold.it/150x150

VMWare Workstation虚拟机网卡工作模式及配置方法

♀尐吖头ヾ 提交于 2021-02-11 01:48:52
打开VMware→虚拟机→设置。如下图 一、 桥接模式(Bridge) 可将虚拟系统IP与本地系统设在同一网段,此时虚拟机相当于一台网络中与本机公用一个HUB的独立设备,网络中其他机器与虚拟机器、本地实体机与虚拟机之间均可以双向访问。此时虚拟机与网络中其他机器的地位是对等的虚拟机能否连接外网取决于路由器的相关设置。具体配置如下: 二、 NAT模式 1工作原理 该模式同样能实现本机系统与虚拟机系统的双向访问(实际:本机访问虚拟机IP在该模式下不行,建议用host-only),网络中其他机器无法访 问虚拟系统,但虚拟系统可通过NAT协议访问其他机器。 NAT协议的IP地址分配机制:虚拟系统使用DHCP协议自动获得IP地址,本机系统中的VMWare Services会为虚拟系统分配一个内部IP. 在这种模式下,会发现本机的网络连接中出现了一个虚拟网卡VMnet8,此时VMnet8就相当于一个接到内网的网卡,虚拟系统等同于运行在位于实体机之后的内网之中,虚拟系统内部的网卡eth0则独立于VMnet8.由于VMWare Workstation自带NAT服务,因此提供了从VMnet8内网到外网的IP地址转换。 注: NAT 即Network Address Translation网络地址转换,一种广域网接入技术,用于将私有地址转化为合法的IP地址。NAT技术很好的解决了IP地址不足的问 题

iOS 14下面图片无法加载,包括weex、YYAnimateView、SDAnimatedImageView

≡放荡痞女 提交于 2021-02-10 17:53:57
升级xcode12后,编译运行App发现大片大片的图片加载不出来,包括weex的图片和YYAnimateView的图片都有问题。 经过一番研究之后,发现是iOS 14下UIKit对 `displayLayer:`的处理机制有所变化。 `displayLayer:`是`CALayerDelegate`的代理方法。在iOS 14之前,UIKit在调用这个方法之前就会去渲染`UIImageView.image`。 而在iOS 14,UIKit则是先去调用代理方法,如果你实现了`displayLayer:`这个方法,那么UIKit就不会再去渲染了。 如果改成下面这样就可以正常加载了: ``` - (void)displayLayer:(CALayer *)layer { UIImage *currentFrame = _curFrame; if (currentFrame) { layer.contentsScale = currentFrame.scale; layer.contents = (__bridge id)currentFrame.CGImage; } else { // If we have no animation frames, call super implementation. iOS 14+ UIImageView use this delegate method

CentOS安装etcd和flannel实现Docker跨物理机通信

北城余情 提交于 2021-02-08 13:36:17
1、安装etcd yum install etcd systemctl stop etcd systemctl start etcd systemctl status etcd systemctl enable etcd ##开机自启动 查看etcd是否启动成功,etcd默认端口为2379 $ lsof -i:2379 测试etcd可用性 $ etcd --version $ etcdctl mkdir /test $ etcdctl ls / 2、安装flannel $ wget https://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz $ tar xvf flannel-0.5.5-linux-amd64.tar.gz $ cd flannel-0.5.5 $ mv flanneld /usr/bin $ mv mk-docker-opts.sh /usr/bin 启动flannel方法一: $ flanneld & 查看flannel是否启动 $ ps -ef|grep flannel 启动flannel方法二(推荐):添加到systemd服务中 a、创建配置/etc/flannel/flanneld.conf $ mkdir -p /etc