当前位置: 首页 > news >正文

docker容器的相关环境及创建镜像1

一、容器管理工具介绍


LXC
2008
是第一套完整的容器管理解决方案
不需要任何补丁直接运行在linux内核之上管理容器。创建容器慢,不方便移植

Docker
是在LXC基础上发展起来的。拥有一套容器管理生态系统
生态系统包含︰容器镜像、注册表、RESTFUL API及命令行操作界面

Docker版本
2017年的3月1号之后,Docker的版本命名开始发生变化,同时将CE版本和EE版本进行分开。
Docker社区版(CE)∶为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce提供了简单的安装和快速的安装,以便可以立即开始开发。docker-ce集成和优化,基础设施。
Docker企业版(EE)∶专为企业的发展和IT团队建立。docker-ee为企业提供最安全的容器平台,以应用为中心的平台。

二、部署docker

用于管理容器,官网地址:www.docker.com

谷歌开发的基于golang语言

1、获取docker-ce的yum

 

 按照官方文档去安装docker

安装之前必须卸载旧版docker,直接复制粘贴

yum list | grep docker  查看是否安装了docker

检测yum源是否配置成功,ls  /etc/yum.repos.d,查看是否存在docker-ce.repo

 2、安装docker

yum repolist   查看yum仓库是否有docker-ce-stable的软件包

 yum -y install docker-ce  直接安装,也可以复制粘贴文档

安装特定版本可以看官方文档

 设置docker开机自启 systemctl enable docker,启动docker,systemctl start docker

 如果报错daemon守护进程没有开启,就是没有开docker服务

 3、容器、镜像、仓库之间的关系

registry是仓库,但实际上是注册表的意思,里面可以放镜像

 docker客户端收到命令发送给docker daemon守护进程,假如命令是调用CentOS镜像资源。

daemon就会在本地找是否有对应的镜像,如果没有就会在Registry仓库下载。

最后才通过对应的镜像images创建容器

安装的软件其实是在容器中,就比如字帖,就是一个模板。写字的时候需要加一张纸在上面,所以软件安装到容器中效率高,还可以用完就删,不会对镜像产生影响。

4、启动容器

第一步:查看本地是否有镜像

 第二步:搜索镜像docker search 镜像名称

 第三步:下载镜像

docker pull centos  下载centos镜像,默认是latest。可以在后面添加指定的版本号

docker pull centos:7.5  docker pull mysql:8.0.2

 查看镜像是否下载完成docker images

 第四步:运行容器

 --name=c1是给容器命名,只不过二进制代码才是容器的真正的名称

 uptime是容器启动时间  还有用户和1到15分钟的 负载均衡
 

在容器中安装apache、iproute

 在本地可以访问容器ip并获取资源,exit退出之后就无法访问了,ps可以查看容器中的进程

5、docker daemon管理

远程管理docker daemon充分条件
可以把docker client与docker daemon分开部署

可以通过第三方软件管理docker daemon创建的容器

第一步:关闭docker daemon守护进程并修改daemon配置文件

 修改后只保留dockerd

 修改之后必须reload

 第二步:重新启动docker

systemclt  start  docker

第三步:添加远程配置文件管理docker daemon

 默认情况,/etc/docker下没有daemon.json

键值对的配置规则:hosts   对应" "," " 

远程管理docker daemon 必须写2375端口

重启docker

第四步:远程连接测试

注意是远程主机的ip,不是容器的ip。

 网页访问的时候要加端口号

可以通过远程命令pull下载镜像

6、docker命令行命令介绍

docker --help

可以分为docker管理命令和普通命令,管理命令是普通命令的补充

例如image ,普通命令是docker images  但是管理类命令是docker image ls

pull下载镜像

 6.1、容器镜像传输

打包本地镜像用save命令

 删除镜像之前必须删除容器rm 容器名称或者container id

 容器哪怕是退出状态也会占用镜像

 docker  images  查看镜像

把镜像导入本地用load -i tar包名称

启动容器,run是普通命令,container是管理命令

容器可以随便创建,所以不用在意容器,它的作用其实就是用来跑服务的。

echo "container webpage" >> /var/www/html/index/html

 容器安装httpd服务之后用决定路径命令启动

为了方便使用,可以把容器保存成tar包,也就是基于容器生成容器镜像

 导入容器镜像tar包用import -m 事务标签 容器镜像tar包  容器镜像标签 

 可以用history 命令查看容器镜像的历史信息,之前创建了哪些容器镜像

方便通过标签tag去识别之前安装的容器镜像

创建一个新的容器c4可以直接使用导入的容器镜像

 之前安装一个软件需要重复在多台服务器上安装,容器镜像保存并导入之后就不用重复安装了

每创建一个新的容器都可以直接使用导入的容器镜像

二、查看容器ip的方法

第一种:exec 容器的名称 ip a s

查看正在运行的容器的ip,不用进入容器中,直接在终端就能查看

run是创建一个新的容器

 第二种:不需要和容器进行交互,直接用 docker  inspect  容器名称  

inspect可以查看容器的 所有信息

 第三种:需要进入容器的,必须安装iproute

 容器的ip地址是由docker0网桥自动分配的 

2.1、停止正在运行的容器

docker ps 是查看正在运行的容器  docker ps -a  是查看所有存在的容器

删除容器之前必须stop

 关闭和开启多个容器

 通过attach附加参数进入进入容器,前提是容器必须是开启状态

 删除容器之前必须停止stop

2.2、容器端口映射

容器的配置是一次性的,无法修改,只能删除之后释放容器空间。

停止容器之后rm容器,重新配置端口等信息

 197服务器上的容器映射主机80端口

 容器端口映射

 

合法的端口,全世界都能访问

less /etc/services

 主机的端口有多少个?

分情况,tcp协议有多少个,udp协议有多少个,然后每个ip又都有tcp和udp

端口号的范围:1 ~ 65535

一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;

一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。

三、数据持久化存储

3.1、容器使用docker主机存储数据

第一步∶在Docker Host创建用于存储的目录

docker  --help  查看-v命令是创建一个volume

挂载一个volume,随时随地可以把容器中的数据保存到docker主机

 创建容器时自动就创建了data目录到/目录下,所以docker主机创建的目录就可以自动挂载到data

进入正在运行的容器并以命令行交互,attach进入容器之后才能touch

案例:运行在容器中的http服务,使用docker host的/web目录中的网页文件,并能够在doker host上进行修改,修改后立即生效。
第一步︰创建/web并添加网页文件

第二步:启动容器对/web目录进行挂载

 也就是把docker主机创建的web目录挂载到容器c200使用

第三步:安装好http服务之后访问8080端口

httpd -k start   开启http服务,然后使用另外的主机访问docker主机ip:8080就可以访问到web目录 

ctrl + p +q 退出容器不停止运行容器之后可以修改主机的web目录内容

容器时间同步

docker run -it -v /etc/localtime:/etc/localtime --name 容器名称 centos:latest /bin/bash

把docker host的时间同步到容器

在容器外执行容器内命令

exec 是在容器中打开新的终端,并且可以启动新的进程。用exit退出,不会导致容器的停止。

容器内的命令ls, docker ip a s  不是容器内的命令

 容器间使用link互联

 容器的编排其实就是每个服务的启动顺序,例如lnmp架构中如果有调度器,必须先启动数据库服务再启动web服务器。web服务器是调度服务器的依赖,数据库服务器又是web服务器的依赖

第一步︰创建被依赖容器

第二步:创建依赖于源容器的容器

也就是说想启动容器,必须先启动被依赖的容器c202,才能启动c203

容器202和203被自动映射到了/etc/hosts中

 哪怕停止运行容器之后新增一个容器去抢占了原有的ip也不会影响容器的编排关系

容器的ip还是会自动映射到/etc/hosts文件中

只能先启动被依赖的容器,才能启动依赖于源容器的容器

四、docker容器镜像

 4.1、容器镜像介绍

Docker镜像就是一组只读的目录,或者叫只读的Docker容器模板,镜像中含有一个Docker容器运行所需要的文件系统,所以我们说Docker镜像是启动一个Docker容器的基础。
可以将Docker镜像看成是Docker容器的静态时,也可将Docker容器看成是Docker镜像的运行时。
从Docker的官方文档来看,Docker容器的定义和Docker镜像的定义几乎是相同,Docker容器和Docker镜像的区别主要在于docker容器多出了一个可写层。
 

联合文件系统(UnionFS )是一种轻量级的高性能分层文件系统,它支持将文件系统中的修改信息作为一次提交,并层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,应用看到的是挂载的最终结果。
联合文件系统是实现Docker镜像的技术基础。Docker镜像可以通过分层来进行继承。例如,用户基于基础镜像(用来生成其他镜像的基础,不是centos操作系统,只是复刻了相同的文件系统目录结构)来制作各种不同的应用镜像(tomcat、apache)。这些镜像共享同一个基础镜像层,提高了存储效率。此外,当用户改变了一个Docker镜像(比如升级程序到新的版本),则会创建一个新的层
( layer )。因此,用户不用替换整个原镜像或者重新建立,只需要添加新层即可。用户分发镜像的时候,也只需要分发被改动的新层内容(增量部分)。这让Docker的镜像管理变得十分轻量级和快速。
 

镜像是静态的只读状态,但是镜像开启的 容器可以在里面读写并安装服务

还可以把容器镜像打包之后放到其他docker主机上运行

 docker client向docker daemon发起创建容器的请求

docker daemon查找有无客户端需要的镜像
如无,则到容器的镜像仓库中下载需要的镜像
拿到容器镜像后再启动容器

容器镜像就是文件系统,用来保存和启动容器的

4.2基础镜像


1.部署一台最小化软件安装操作系统

2.把最小化软件安装操作系统根目录进行打包
每台计算机的映射都是不一样的,会自动映射键盘鼠标等,如果镜像迁移到另外一台计算机,一定会报错。所以打包镜像必须排除进程目录/proc和内核目录/sys

 --numeric-owner   总是以数字代表用户/组的名称(打包的镜像里面用户和组的名称和id一定不一样)

-cvf 创建可显示的文件,就是把/目录打包成tar包  

3.使用docker import导入至容器运行主机
 

 用scp命令把打包的基础镜像拷贝到另外一台主机的/root

docker import tar包名称 自定义名称

导入镜像成功之后docker images 查看或者 docker image ls

运行容器docker run -it --name 

 proc进程目录是容器本身的目录和镜像没关系

4.3、应用镜像

在基础镜像运行的容器中安装apache,如果报错就yum clean all再安装

然后使用commit提交镜像

docker commit 容器名称 自定义应用镜像名称:tag标签

 应用镜像就是在基础镜像运行的容器中安装软件,然后commit成一个应用镜像

运行应用镜像,也就是运行安装的软件对应的服务,永远杀不死,一直运行。

 

4.4、Dockerfile的关键字

FROM(指定基础image )
MAINTAINER(用来指定镜像创建者信息)

RUN(运行命令)
CMD(设置container启动时执行的操作)
如果容器镜像中有此命令,启动容器时,不要手动让容器执行其它命令

ENTRYPOINT(设置container启动时执行的操作)进入点
 USER(设置container容器的用户)
EXPOSE(指定容器需要映射到宿主机器的端口)暴露端口号

ENV(用于设置环境变量)
ADD(从src复制文件到container的dest路径)

VOLUME(指定挂载点)
WORKDIR(切换目录)

4.5、docker build 通过Dockerfile 创建应用镜像的过程分析

通过Dockerfile创建一个可以在启动容器时就直接启动httpd应用的镜像
步骤∶
1、创建一个文件夹(目录)
2、在文件夹(目录)中创建Dockerfile文件及其它文件

3、使用docker build命令创建镜像
4、使用创建的镜像启动容器


目的︰通过Dockerfile创建一个可以在启动容器时就直接启动httpd应用的镜像步骤︰
创建一个目录,用于存储Dockerfile所使用的文件
在此目录中创建Dockerfile文件及制作镜像所使用到的文件
在此目录中使用docker build创建镜像(读取Dockerfile文件)

使用创建的镜像启动容器

思考︰
1.基础镜像是谁? centos7u62.安装httpd
3.yum -y install httpd
4.安装完成后如何启动httpd?编写一个把httpd启动的脚本文件

5.把httpd放在前端执行还是后端执行?前端
6.暴露端口? tcp80
7.添加一个测试文件,用于验证httpd是否可用?
 

4.6、使用Dockerfile创建应用镜像

 创建一个test目录之后编辑一个脚本

vim run-httpd.sh

删掉apache的pid

前端运行httpd服务 foreground前景

 直接创建一个index.html

然后再创建Dockerfile文件

vim Dockerfile

注意必须把index.html 文件add到项目文件目录下面/var/www/html/

如果安装过程中报错还可以添加 rpm --rebuilddb  重建数据库

 

 使用docker build 创建应用镜像

-t 指定应用镜像的名称,自定义的需要tag

-d 后台运行应用镜像时不能在后面加 /bin/bash ,因为脚本中的CMD会被覆盖

验证直接用inspect 应用镜像id 查看IP,就能访问到写入的index.html内容

Dockerfile创建的 应用镜像更换项目内容

 在test目录创建一个目录挂载到项目目录就可以实现网站内容更换

 

4.6.1、Dockerfile工作原理

在Dockerfile定义所要执行的命令,使用docker build创建镜像,过程中会按照Dockerfile所定义的内容打开临时性容器(使用docker commit进行提交),把Dockerfile文件中的命令全部执行完成,就得到了一个容器应用镜像。

4.6.2、通过Dockerfile安装nginx应用镜像

 前提都是在docker服务器上有基础镜像

第一步:创建一个目录并在目录中创建相关的文件

 报错是因为echo '单引号'

第二步:vim Dockerfile

 第三步:通过docker build 创建nginx镜像

 镜像都是创建到当前目录的

容器是不支持做数据持久化的,所以才关闭nginx的后台运行,不关闭的话

容器会产生访问日志,只能收集,无法保存

docker images验证镜像是否创建成功

第四步:后台启动nginx应用镜像容器

 通过docker inspect 容器id 查看容器的ip

curl http://ip 访问容器的项目文件内容

五、docker存储数据的位置和方法

docker info 尽可能显示docker系统信息

 存储的驱动overlay2

 AUFS联合文件系统是乌班图   统一文件系统是CentOS

 容器镜像就是把系统的 /目录打包

下载镜像之后会发现镜像的存储位置是overlay2

 查看镜像可以diff看到根目录的结构

overlay2中的l文件本来是空的,但是创建镜像之后就会产生于软链接去挂载镜像

因为镜像的字符长度超了

 5.1 Overlay及Overlay2原理


OverlayFS将单个Linux主机上的两个目录合并成一个目录。这些目录被称为层,统一过程被称为联合挂载。OverlayFS底层目录称为lowerdir,高层目录称为upperdir。合并统一视图称为merged。当需要修改一个文件时,使用CoW将文件从只读的Lower复制到可写的Upper进行修改,结果也保存在Upper层。在Docker中,底下的只读层就是image,可写层就是Container。


overlay2是overlay的改进版,只支持4.0以上内核添加了Multiple lower layers in overlayfs的特性,所以overlay2可以直接造成muitiple lower layers不用像overlay一样要通过硬链接的方式(最大128层) centos的话支持3.10.0-514及以上内核版本也有此特性,所以消耗更少的inode

 本质区别是镜像层之间共享数据的方式不用

 overlay共享数据方式是通过硬连接
而overlay2是通过**每层的lower文件*

 overlay2这个目录存储的镜像及数据如果磁盘空间不够了可以

考虑去查找不需要的容器rm删除

docker运行后overlay2目录就会新增数据,运行前只有一条镜像数据


 

相关文章:

docker容器的相关环境及创建镜像1

一、容器管理工具介绍 LXC 2008 是第一套完整的容器管理解决方案 不需要任何补丁直接运行在linux内核之上管理容器。创建容器慢,不方便移植 Docker 是在LXC基础上发展起来的。拥有一套容器管理生态系统 生态系统包含︰容器镜像、注册表、RESTFUL API及命令行操作界…...

如何使用ChatGPT在1天内完成毕业论文

如何使用ChatGPT在1天内完成毕业论文 几天前,亲眼见证了到一位同学花了1天时间用ChatGPT完成了他的毕业论文,世道要变,要学会使用黑科技才能混的下去。废话到此结束,下面说明这么用AI生成自己的论文。 使用工具: 1. P…...

Debezium同步之实时数据采集必备工具

目录 简介 基础架构图片 Kafka Connect Debezium 特性 抽取原理 简介 RedHat(红帽公司) 开源的 Debezium 是一个将多种数据源实时变更数据捕获,形成数据流输出的开源工具。 它是一种 CDC(Change Data Capture)工具,工作原理类似大家所熟知的 Canal, DataBus, Maxwell…...

【区块链】走进web3的世界-gas费用

气体单位用于衡量在以太坊上执行交易所需的计算量。由于每笔交易都需要一些计算资源来执行,因此需要一笔费用,通常称为Gas fee或Transaction fee 。 汽油费以以太坊的本地货币——ether或ETH支付。汽油费的计算方式在伦敦升级前后略有不同。 注意&#…...

世界上最大的手工艺品连锁零售商Michaels验厂总结

【世界上最大的手工艺品连锁零售商Michaels验厂总结】 Michaels是世界上最大的手工艺品连锁企业,公司的总部位于美国德克萨斯州的Irving,公司现在有员工12500人。在美国49个州和加拿大经营着1200多家Michaels工艺品的连锁店。每家商店平均销售面积约为18…...

springboot如何优雅的打印项目日志

文章目录如何优雅的打印项目日志原理实现日志打印Filter注入容器如何优雅的打印项目日志 框架 springboot 原理 使用filter拦截请求,打印出请求、响应,及耗时 知识点 1、OncePerRequestFilter Filter base class that aims to guarantee a single …...

【JAVA程序设计】(C00127)基于SSM+vue开发的音乐播放管理系统-有文档

基于SSMvue开发的音乐管理系统-有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架vue以及html前台的开发的音乐管理系统共分为二个角色:管理员、用户 管理员角色包含以下功能: 登录、个人中心(修改密码、个人信息修改&am…...

C#|调用C/C++动态库

参考:C#总结(四)调用C动态库(https://www.shuzhiduo.com/A/A2dmV49qze/) 文章目录C#加载C动态库C#加载C#动态库涉及到的概念知识:托管DLL和非托管DLL的区别(https://www.tinymind.net.cn/articl…...

让chatGPT当我的老师如何? 通过和chatGPT交互式学习,了解在ES中,一条JSON数据是如何写到磁盘上的

最近一直有一个问题,如鲠在喉。争取早一天解决,早一天踏踏实实的睡觉。 问题是:在ES中,一条JSON数据是如何写入到磁盘上的? 如何解决这个问题?我想到了chatGPT,还有lucene的学习资料。这篇文章&…...

chapter-7数据库事务

以下课程来源于MOOC学习—原课程请见:数据库原理与应用 考研复习 DBMS保证系统中一切事务的原子性、一致性、隔离性和持续性 DBMS必须对事务故障、系统故障和介质故障进行恢复 恢复中最经常使用的技术:数据库转储和登记日志文件 恢复的基本原理&#…...

阿里本地生活再出发:口碑入高德,备战美团、抖音

配图来自Canva可画 近日,有传言称高德地图将和阿里本地生活旗下的到店业务口碑正式合并,未来阿里旗下所有的本地生活到店业务都将统一整合在高德地图的入口中。3月22日,高德地图正式确认了此事,并表示高德地图作为“出门好生活开…...

SSM学习记录3:响应(注释方式 + SprigMVC项目 + 2022发布版本IDEA)

响应 ResponseBody注解的作用是将当前控制器中方法的返回值作为响应体 1.返回页面 无需在方法上进行ResponseBody注解,只需RequestMapping匹配地址,并且返回值为带后缀的页面名字符串 前面学习中除了json数据,所有带ResponseBody注解的方法…...

Linux·gcc 编译优化简介

1、gcc 编译优化简介 gcc 提供了为了满足用户不同程度的的优化需要,提供了近百种优化选项,用来对 { 编译时间,目标文件长度,执行效率 } 这个三维模型进行不同的取舍和平衡。优化的方法不一而足,总体上将有以下几类&…...

【电子学会】2022年12月图形化一级 -- 潜水

潜水 暑假小雨和爸爸去玩了潜水,他见到了各种各样的海洋生物。 1. 准备工作 (1)添加背景“Underwater 2”; (2)删除小猫角色,添加角色“Diver2”、“Fish”、“Jellyfish”、“Shark”; (3)为背景添加声音“Xylo2”。 2. 功能实现 (1)点击绿旗,播放背景音乐…...

MySQL日期时间函数汇总、时间格式转换方法

MySQL日期时间函数汇总、时间格式转换方法时间函数日期时间格式转换date_format函数EXTRACT()DATE_ADD()DATE_SUB()DATEDIFF函数时间函数 函数描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()返回日期或日期/时间表达式的日期部分HOUR()获…...

【CSS】使用绝对定位 / 浮动解决外边距塌陷问题 ( 为父容器 / 子元素设置内边距 / 边框 | 为子元素设置浮动 | 为子元素设置绝对定位 )

文章目录一、外边距塌陷描述1、没有塌陷的情况2、外边距塌陷情况二、传统方法解决外边距塌陷 - 为父容器 / 子元素设置内边距 / 边框三、使用浮动解决外边距塌陷 - 为子元素设置浮动四、使用绝对定位解决外边距塌陷 - 为子元素设置绝对定位一、外边距塌陷描述 在 标准流的父盒子…...

前端手写综合考题

1 实现一个 // 使用 promise来实现 sleepconst sleep (time) > {return new Promise(resolve > setTimeout(resolve, time))}sleep(1000).then(() > {// 这里写你的骚操作}) sleep 函数,比如 sleep(1000) 意味着等待1000毫秒 2 给定两个数组&#xff0c…...

数据结构-排序

本节目标: 1.排序的概念及其运用 2.常见排序算法的实现 3.排序算法复杂度及稳定性分析 1.排序的概念及其应用 1.1排序的概念 排序就是按照某个我们设定的关键字,或者关键词,递增或者递减,完成这样的操作就是排序。 1.2排…...

ROS话题通信自定义+发布订阅代码--03

话题通信自定义msg 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味…...

【MySQL】实验七 视图

文章目录 1. 建立city值为上海、北京的顾客视图2. 建立城市为上海的客户2016年的订单信息视图3. SQL视图:建立视图AVG_CJ4. SQL视图:建立视图IS_STUDENT5. SQL视图:建立视图CJ_STUDENT6. SQL视图:根据视图CJ_STUDENT创建视图CJ_TJ1. 建立city值为上海、北京的顾客视图 建立…...

Linux常见操作命令【三】

一、系统资源 1.1 ps(process staus) ps -ef e显示所有进程、f全格式 ps -aux 显示所有包含其他使用者的进程 ps -ef | grep CCC 查找含有CCC进程的格式 ps -u username 显示指定进程用户信息1.2 kill kill 12345 杀死进程12345 kill -KILL…...

C-关键字(下)

文章目录循环控制switch-case-break-defaultdo-while-forgetchar()break-continuegotovoidvoid*returnconstconst修饰变量const修饰数组const修饰指针指针补充const 修饰返回值volatilestruct柔型数组union联合体联合体空间开辟问题利用联合体的性质,判断机器是大端还是小端enu…...

关于电商商品数据API接口列表,你想知道的(详情页、Sku信息、商品描述、评论问答列表)

目录 一、商品数据API接口列表 二、商品详情数据API调用代码item_get 三、获取sku详细信息item_sku 四、获得淘宝商品评论item_review 五、数据说明文档 进入 一、商品数据API接口列表 二、商品详情数据API调用代码item_get <?php// 请求示例 url 默认请求参数已经URL…...

232:vue+openlayers选择左右两部分的地图,不重复,横向卷帘

第232个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers项目中自定义js实现横向卷帘。这个示例中从左右两个选择框中来选择不同的地图,做了不重复的处理,即同一个数组,两部分根据选择后的状态做disabled处理,避免重复选择。 直接复制下面的 vue+openlayers…...

溯源取证-内存取证 高难度篇

今天的场景依然是windows场景&#xff0c;只不过此次场景分为两个镜像&#xff0c;本次学习主要学习如何晒别钓鱼邮件、如何提取钓鱼邮件、如何修复损坏的恶意文件、如何提取DLL动态链接库文件 本次需要使用的工具&#xff1a; volatility_2.6_lin64_standalone readpst clams…...

JAVA语言中的代理模式

代理可以进一步划分为静态代理和动态代理&#xff0c;代理模式在实际的生活中场景很多&#xff0c;例如中介、律师、代购等行业&#xff0c;都是简单的代理逻辑&#xff0c;在这个模式下存在两个关键角色&#xff1a; 目标对象角色&#xff1a;即代理对象所代表的对象。 代理…...

最后一步:渲染和绘制

浏览器的工作步骤如下&#xff1a; URL>字符流>词&#xff08;token&#xff09;流>DOM树&#xff08;不含样式信息的 DOM&#xff09;>DOM树CSS规则&#xff08;含样式信息的 DOM&#xff09;>根据样式信息&#xff0c;计算了每个元素的位置和大小>根据这些…...

C++类和对象终章——友元函数 | 友元类 | 内部类 | 匿名对象 | 关于拷贝对象时一些编译器优化

文章目录&#x1f490;专栏导读&#x1f490;文章导读&#x1f337;友元&#x1f33a;概念&#x1f33a;友元函数&#x1f341;友元函数的重要性质&#x1f33a;友元类&#x1f341;友元类的重要性质&#x1f337;内部类&#xff08;不常用&#xff09;&#x1f33a;内部类的性…...

拼多多按关键字搜索商品 API

一、拼多多平台优势&#xff1a; 1、独创拼团模式 拼团拼单是拼多多独创的营销模式&#xff0c;其特点是基于人脉社交的裂变传播&#xff0c;非常具有传播性。 由于本身走低价路线&#xff0c;加上拼单折扣&#xff0c;商品的分享和人群裂变效果非常明显&#xff0c;电商前期…...

全链路日志追踪

背景 最近线上的日志全局追踪 traceId 不好使了&#xff0c;不同请求经常出现重复的 traceId&#xff0c;或者通过某个请求的 traceId 追踪搜索&#xff0c;检索出了与该请求完全不相干的日志。我领导叫我去排查解决这个问题&#xff0c;这里我把我排查的过程思路以及如何解决…...