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

Docker 学习笔记

概述

1. 什么是 Docker?

Docker 是一个应用容器平台,管理项目中用到的所有环境(MySQL、Redis…)

2. Docker 和虚拟机的区别

在这里插入图片描述

虚拟机是携带操作系统的,本身很小的应用程序因为携带了操作系统而变得十分笨重,Docker 不携带操作系统,所以 Docker 的应用非常轻巧

在调用宿主机资源时,虚拟机利用 Hypervisor 去虚拟化内存,整个调用过程是 虚拟内存 - 虚拟物理内存 - 真实物理内存,但是 Docker 利用 Docker Engine 去调用宿主机资源,这个过程是 虚拟内存 - 真实物理内存

3. Docker 核心架构

在这里插入图片描述

  • 镜像:一个镜像代表一个应用环境,它是一个只读的文件,如 MySQL 镜像,Tomcat 镜像,Nginx 镜像等
  • 容器:镜像每次运行之后就会产生一个容器,就是正在运行的镜像,特点是可读可写
  • 仓库:用来存放镜像的位置,类似于 maven 仓库,也是镜像上传和下载的位置
  • dockerFile:docker 生成镜像配置文件,用来书写自定义镜像的配置
  • tar:一个对镜像打包的文件,日后可以还原成镜像

4. Docker 运行流程

在这里插入图片描述


安装 Docker

以 Ubuntu18.04.4 为例

更新 ubuntu 的 apt 源索引

sudo apt-get update

安装包允许 apt 通过 HTTPS 使用仓库

sudo apt-get install \apt-transport-https \ca-certificates \curl \software-properties-common

添加 Docker 官方 GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

设置 Docker 稳定版仓库

sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"

添加仓库后,更新 apt 源索引

sudo apt-get update

安装最新版 Docker CE(社区版)

sudo apt-get install docker-ce

检查 Docker CE 是否安装正确

sudo docker run hello-world

启动 docker

sudo service docker start

停止 docker

sudo service docker stop

重启 docker

sudo service docker restart

Docker 配置阿里云镜像加速服务,访问阿里云登录自己的账号查看 docker 镜像加速服务

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://e9rzpyni.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker info	# 验证 docker 的镜像加速是否生效

Docker 镜像命令

# 辅助命令
docker version  # 查看 docker 命令
docker info     # 查看更详细的信息
docker --help   # 帮助命令
# images 镜像命令
docker images       # 查看本地所有镜像
docker images -a    # 列出所有镜像(包含中间映像层)
docker images -q    # 只显示镜像id
# 搜索镜像
docker search [镜像名]
docker search -s [镜像名]   # 列出收藏数不少于指定值的镜像
docker search --no-trunc [镜像名]   # 显示完整的镜像信息
# 拉取镜像
docker pull [镜像名]
# 删除镜像
docker rmi [镜像名]
docker rmi -f [镜像名]  # 强制删除
# 构建镜像
docker build -t [镜像名] [Dockerfile所在目录]
docker build -t [镜像名] [Dockerfile所在目录] --no-cache    # 禁用缓存

Docker 容器命令

## 运行容器
# --name  # 为容器起一个名字
# -p      # 映射端口号:原始端口号,指定端口号启动
# -d      # 启动守护式容器
# -rm    # 用完即删
docker run [镜像名]
## 查看运行的容器
# -a      # 正在运行的和历史运行过的容器
# -q      # 静默模式,只显示容器编号
docker ps   # 列出所有正在运行的容器
## 停止|关闭|重启容器
docker start 容器名字或容器id   # 开启容器
docker restart 容器名或容器id   # 重启容器
docker stop 容器名或容器id      # 正常停止容器运行
docker kill 容器名或容器id      # 立即停止容器运行
## 删除容器
docker rm [容器id]
docker rm -f [容器id]  # 强制删除
docker rm -f $(docker ps -qa)   # 全部容器删除
## 查看容器内的进程
docker top [容器名或容器id]     # 查看容器内的进程
## 查看运行容器内部的细节
docker inspect [容器id]     # 查看容器内部细节
## 查看容器的运行日志
# -t              # 加入时间戳
# -f              # 跟随最新的日志打印
# -tail [数字]    # 显示最后多少条
docker logs [OPTIONS] [容器id或容器名]  # 查看容器日志
## 容器内数据交互
# 进入容器内部
# -i  # 以交互模式运行容器,通常与 -t 一起使用
# -t  # 分配一个伪终端,命令后要跟一个 shell 窗口,如 /bin/bash
docker exec [options] [容器id]
# 退出容器
exit
## 将容器打包为新的镜像
docker commit -a="[作者]" -m="[描述信息]" [容器id] [目标镜像名称]:TAG
## 从容器中复制文件到宿主机目录中
docker cp 容器id:容器内资源路径 宿主机目录路径
## 设置容器和宿主机共享目录
# 宿主机必须是绝对路径,宿主机目录会覆盖容器内目录内容
docker run -it -v /[宿主机路径]:/[容器内的路径]:镜像名
# 检查 json 字符串有没有以下内容,如果有则证明卷挂载成功
# "Mounts":[
# 	{
# 		"Type":"bind",
#       "Source":"/hostDataValueme",
#       "Destination":"/containerDataValueme",
#       "Mode":"",
#       "RW":true,
#       "Propagation":"rprivate"
#	}
# ]
docker inspect [容器id]
## 打包镜像
docker save [镜像名] -o [名称].tar
## 载入镜像
docker load -i [名称].tar

Docker 安装 MySQL

以 Ubuntu18.04.4 为例

拉取 mysql 镜像到本地

sudo docker pull mysql:tag  # tag 不加默认最新版本

运行 mysql 服务

# 没有暴露外部端口,外部不能连接
docker run --name [自定义容器名称] -e MYSQL_ROOT_PASSWORD=[设置 root 密码] -d mysql:tag
# 暴露外部端口
docker run --name [自定义容器名称] -e MYSQL_ROOT_PASSWORD=[设置 root 密码] -p 3306:3306 -d mysql:tag

进入 mysql 容器

sudo docker exec -it [容器名称]|[容器id] bash

外部查看 mysql 日志

sudo docker logs [容器名称]|[容器id]

使用自定义配置参数

docker run --name [自定义容器名称] -v [宿主机配置文件目录]:[容器中配置文件目录] -e MYSQL_ROOT_PASSWORD=[设置 root 密码] -p 3306:3306 -d mysql:tag

将容器数据位置与宿主机位置挂载保证数据安全

docker run --name [自定义容器名称] -v [宿主机配置文件目录]:[容器中配置文件目录] -v [宿主机数据文件目录]:[容器中数据文件目录] -e MYSQL_ROOT_PASSWORD=[设置 root 密码] -p 3306:3306 -d mysql:tag

将 mysql 数据库备份为 sql 文件

# 导出全部数据
sudo docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
# 导出指定库数据
sudo docker exec mysql sh -c 'exec mysqldump --databases [库表] -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
# 导出指定库,但不要数据
sudo docker exec mysql sh -c 'exec mysqldump --no-data --databases [库表] -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql

执行 sql 文件到 mysql

sudo docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /root/xxx.sql

Docker 安装 Redis

以 Ubuntu18.04.4 为例

在 docker hub 搜索 redis 镜像

sudo docker search redis

拉取 redis 镜像到本地

sudo docker pull redis

运行 redis 服务

# 没有暴露外部端口,外部不能连接
sudo docker run --name [自定义容器名称] -d redis:tag
# 暴露外部端口
sudo docker run --name [自定义容器名称] -p 6379:6379 -d redis:tag

外部查看 redis 日志

sudo docker logs -t -f [容器名称]|[容器id]

进入容器内部查看

sudo docker exec -it [容器名称]|[容器id] bash

加载外部自定义配置启动 redis 容器,默认情况下 redis 官方镜像中没有 redis.conf 配置文件,需要去官网下载指定版本的配置文件

sudo docker run --name [自定义容器名称] -v [宿主机配置文件路径]:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis:tag redis-server /usr/local/etc/redis/redis.conf

将数据目录挂载到本地保证数据安全

sudo docker run --name [自定义容器名称] -v [宿主机数据目录]:/data -v [宿主机配置文件路径]:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis:tag redis-server /usr/local/etc/redis/redis.conf

Docker 安装 Nginx 服务器

以 Ubuntu18.04.4 为例

在 docker hub 搜索 Nginx 镜像

sudo docker search nginx

拉取 nginx 镜像到本地

sudo docker pull nginx

运行 nginx 服务

# 没有暴露外部端口,外部不能连接
sudo docker run --name [自定义容器名称] -d nginx:tag
# 暴露外部端口
sudo docker run --name [自定义容器名称] -p 80:80 -d redis:tag

进入容器内部

sudo docker exec -it [容器名称]|[容器id] /bin/bash
# 查找目录
whereis nginx
# 配置文件
/etc/nginx/nginx.conf

从容器复制配置文件到主机

dokcer cp [容器名称]|[容器id]:/etc/nginx/nginx.conf [宿主机目录]

挂载 nginx 配置以及 html 到宿主机外部

sudo docker run --name [自定义容器名称] -v [宿主机配置文件路径]:/etc/nginx/nginx.conf -v [宿主机 html 目录]:/usr/share/nginx/html -p 80:80 -d nginx

Docker 安装 Tomcat 服务器

以 Ubuntu18.04.4 为例

在 docker hub 搜索 tomcat

sudo docker search tomcat

下载 Tomcat 镜像

sudo docker pull tomcat

运行 tomcat 镜像

sudo dokcer run -p 8080:8080 -d --name [自定义容器名称] tomcat

进入容器内部

sudo docker exec -it [容器名称]|[容器id] /bin/bash

将 webapps 目录挂载到外部

sudo docker -p 8080:8080 -v [宿主机webapps目录]:/usr/local/tomcat/webapps -d --name [自定义容器名称] tomcat

Docker 安装 MongoDB 数据库

以 Ubuntu18.04.4 为例

在 docker hub 搜索 mongo

sudo docker search mongo    # 无须权限

运行 mongoDB

sudo docker run -d -p 27107:27107 --name [自定义容器名称] mongo

查看 mongo 的运行日志

sudo docker logs -f [容器名称]

进入容器内部

sudo docker exec -it [容器名称]|[容器id] /bin/bash

运行具有权限的容器

sudo docker run --name [容器名称] -p 27017:27017 -d mongo --auth

进入容器配置用户名和密码

# 进入 mongo 客户端
mongo
# 选择 admin 库
use admin
# 创建用户,此用户创建成功,则后续操作都需要用户认证
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})
# 退出
exit

将 mongoDB 中数据目录映射到宿主机中

sudo docker run -d -p 27017:27017 [宿主机数据目录]:/data/db --name [自定义容器名称] mongo

Docker 安装 Elasticsearch 以及 Kibana 服务

预先配置

# 修改配置 sysctl.conf
sudo vim /etc/sysctl.conf
# 加入如下配置
vm.max_map_count=262144
# 启用配置
sysctl -p

docker hub 拉取镜像

sudo docker pull elasticsearch

运行 docker 镜像

sudo docker run -d -p 9200:9200 -p 9300:9300 --name [自定义容器名称] elasticsearch

复制容器中 data 目录到宿主机

sudo docker cp [容器id]:/usr/share/share/elasticsearch/data [宿主机目录]

运行 es 容器,指定 jvm 内存大小并指定 ik 分词器的位置

sudo docker run -d --name  [自定义容器名称] -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms128m -Xmx128m" -v [宿主机插件目录]:/usr/share/elasticsearch/plugins -v [宿主机data目录]:/usr/share/elasticsearch/data elasticsearch:tag

拉取 kibana 镜像

sudo docker pull kibana

启动 kibana 容器

sudo docker run -d --name [自定义容器名称] -e ELASTICSEARCH_URL=[elasticsearch服务url] -p 5601:5601 kibana

Dockerfile

1. 概述

Dockerfile 可以认为是 Docker 镜像的描述文件,是由一系列命令和参数构成的脚本,主要作用是用来构建 docker 镜像

2. Dockerfile 解析过程

在这里插入图片描述

3. Dockerfile 的保留命令

## FROM:当前镜像基于哪个镜像构建,构建时会自动拉取 base 镜像(第一个指令必须是 FROM)
FROM [镜像]
FROM [镜像]:tag
FROM [镜像]:[@<digest>]     # 使用摘要
## MAINTAINER:镜像维护者的姓名和邮箱地址
MAINTAINER [作者信息]
## RUN:构建镜像时需要运行的指令,并提交结果,生成的提交映像将用于 Dockerfile 的下一步
RUN [shell命令格式]
RUN yum install vim
RUN [json格式]
RUN ["yum","install","vim"]
## EXPOSE:构建的镜像创建容器时对外暴露的端口号
EXPOSE 80/tcp   # 没有显示指定默认是 tcp
EXPOSE 80/udp
## WORKDIR:指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
WORKDIR [路径]
## ENV:用来在构建镜像过程中设置环境变量
ENV [键] [值]
ENV [键]=[值]
## AOD:将宿主机下的文件或目录拷贝到镜像且 ADD 命令会自动处理 URL 和解压 tar 包
ADD [要拷贝的文件/目录] [镜像中的目录]  # 第一个参数可以使用通配符
ADD [url] [镜像中的目录]
## COPY:类似 ADD,拷贝文件和目录到镜像,但不能处理 URL 和解压 tar 包
## VOLUME:容器运行时可以挂载到宿主机的目录
VOLUME [容器中可以挂载到宿主机的目录]
## CMD:构建的镜像启动容器时要运行的命令,DockerFile 中可以有多个 CMD 指令,但最后只有一个生效,CMD 会被 docker run 之后的参数替换,格式与 RUN 一致
## ENTRYPOINT:和 CMD 一样,指定容器时执行命令,格式与 RUN 一致,如果要覆盖,必须使用 --entrypoint="[新命令]" [镜像名] [其他参数]

相关文章:

Docker 学习笔记

概述 1. 什么是 Docker&#xff1f; Docker 是一个应用容器平台&#xff0c;管理项目中用到的所有环境&#xff08;MySQL、Redis…&#xff09; 2. Docker 和虚拟机的区别 虚拟机是携带操作系统的&#xff0c;本身很小的应用程序因为携带了操作系统而变得十分笨重&#xff0…...

华为OD机试 - 相同数字的积木游戏1(JS)

相同数字的积木游戏1 题目 小华和小薇一起通过玩积木游戏学习数学。 他们有很多积木,每个积木块上都有一个数字, 积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的2块积木块,计算他们的距离。 小薇请你帮忙替她解…...

Linux系统之iptables应用SNAT与DNAT

目录 SNAT 一.SNAT的原理介绍 1.应用环境 2.SNAT原理 3.SNAT转换前提条件 二.开启SNAT 1.临时打开 2.永久打开 三.SNAT的转换 1.固定的公网IP地址 2.非固定的公网IP地址(共享动态IP地址) 四.SNAT实验 1.实验环境准备 2.配置web服务器&#xff08;192.168.100.100…...

2023美赛ABCDEF思路汇总

注&#xff1a;以下每个题思路仅是个人所想所做&#xff0c;不代表他人。由于时间仓促完成这么多&#xff0c;难免有不足之处&#xff0c;还请谅解。 文章目录A题第一大问第二大问B题第一问第二问第三问C题第一问第二问第三问第四问D题第一问第二问第三问第四问第五问E题第一问…...

Damask和abaqus晶体塑性联合仿真培训通知

一 软件介绍 DAMASK 是一个统一的多物理晶体塑性模拟包。连续体力学边值问题的求解需要连接每个材料点的变形和应力的本构响应,该问题在 DAMASK 中基于晶体可塑性使用各种本构模型和均质化方法能够被有效解决。除此之外&#xff0c;孤立地处理力学已不足以研究新兴的先进高强度…...

用javascript分类刷leetcode17.栈(图文视频讲解)

目录 Stack的特点&#xff1a;先进后出&#xff08;FILO&#xff09; 使用场景&#xff1a;十进制转2进制 函数调用堆栈 js里没有栈&#xff0c;但是可以用数组模拟 42/2 42%20 21/2 21%21 10/2 10%20 5/2 5%21 2/2 2%20 1/2 1%21 stack: [0,1,0,1,0,1] res: 1 0 1 …...

转换大小写与完成字符串反转

问题 编写一个程序&#xff0c;实现字符串的大小写转换并倒序输出&#xff0c;如输入为“HelloWord”&#xff0c;输出为“DROwOLLEH”。 方法 需要掌握char与int的转换&#xff0c;需要将helloord大写输出和W小写输出&#xff0c;不能直接使用toUpperCase方法。因此可以使用ch…...

大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——InputFormat数据输入

3.1.1切片与MapTask并行度决定机制 1、问题引出 MapTask的并行度决定Map阶段的任务处理并发度&#xff0c;进而影响到整个Job的处理速度。 思考&#xff1a;1G的数据&#xff0c;启动8个MapTask&#xff0c;可以提高集群的并发处理能力。那么1K的数据&#xff0c;也启动8个M…...

【Opencv 系列】 第4章 直方图

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言1、直方图的定义、意义、特征2、直方图&#xff1a;2.1 灰度直方图2.2 彩色直方图前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 …...

C#反射原理

一、前言反射&#xff08;Reflection&#xff09;的内容在博客中已经写了一篇&#xff0c;什么是反射&#xff0c;反射的使用&#xff0c;反射优缺点总结&#xff1b;在面试中突然被问道反射的原理&#xff0c;按照理解反射就是在Reflection命名空间和对象的Type对象获取类的方…...

python+vue微信小程序的线上服装店系统

服装行业是一个传统的行业。根据当前发展现状,网络信息时代的全面普及,服装行业也在发生着变化,单就服饰这一方面,利用手机购物正在逐步进入人们的生活。传统的购物方式,不仅会耗费大量的人力、时间,有时候还会出错。小程序系统伴随智能手机为我们提供了新的方向。手机线上服装…...

众德全自动批量剪辑工具,批量去重伪原创视频,全自动合成探店带货等视频

众德全自动批量剪辑工具已连续更新两年&#xff0c;服务了大大小小的自媒体公司工作室共200多个&#xff0c;成就了几百个草根创业者&#xff0c;实现月入10万&#xff0c;自从创办众德传媒之前&#xff0c;我一直坚信自媒体才是年轻草根创业者的出路&#xff0c;不需要技术门槛…...

【项目精选】基于网络爬虫技术的网络新闻分析(论文+源码+视频)

基于网络爬虫技术的网络新闻分析主要用于网络数据爬取。本系统结构如下&#xff1a; &#xff08;1&#xff09;网络爬虫模块。 &#xff08;2&#xff09;中文分词模块。 &#xff08;3&#xff09;中3文相似度判定模块。 &#xff08;4&#xff09;数据结构化存储模块。 &…...

华为OD机试 - 任务混部(JS)

任务混部 题目 公司创新实验室正在研究如何最小化资源成本,最大化资源利用率,请你设计算法帮他们解决一个任务混部问题:有taskNum项任务,每个任务有开始时间(startTime),结束时间(endTime),并行度(parallelism)三个属性,并行度是指这个任务运行时将会占用的服务…...

Matlab搭建AlexNet实现手写数字识别

Matlab搭建AlexNet实现手写数字识别 个人博客地址 文章目录Matlab搭建AlexNet实现手写数字识别环境内容步骤准备MNIST数据集数据预处理定义网络模型定义训练超参数网络训练和预测代码下载环境 Matlab 2020aWindows10 内容 使用Matlab对MNIST数据集进行预处理&#xff0c;搭建…...

比较全面的HTTP和TCP网络传输的单工、全双工和半双工

文章目录单工、全双工、半双工1. 单工2. 半双工3. 全双工HTTP协议的工作模式TCP协议的工作模式本文参考&#xff1a; 图解网络传输单工、半双工、全双工 - 知乎 (zhihu.com) 问&#xff1a;HTTP是单工的还是双工的还是半双工的 - 简书 (jianshu.com) 关于TCP全双工模式的解释_忙…...

CSS Houdini

前言 最近看了几篇文章&#xff0c;是关于 CSS Houdini 的。作为一个前端搬砖的还真不知道这玩意&#xff0c;虽然不知道的东西挺多的&#xff0c;但是这玩意有点高大上啊。 Houdini 是一组底层 API&#xff0c;它们公开了 CSS 引擎的各个部分&#xff0c;从而使开发人员能够通…...

C++引用

这里写目录标题引用引用的基本使用引用做函数参数引用作为函数返回值引用的本质常量引用引用与指针的区别&的三种作用引用 引用的基本使用 作用&#xff1a; 给变量起别名 语法&#xff1a; 数据类型 &别名 原名 引用的本质是给变量起别名&#xff0c;因此&#xff0…...

YOLOv6-目标检测论文解读

文章目录摘要问题算法网络设计BackboneNeckHead标签分配SimOTA&#xff08;YOLOX提出&#xff09;&#xff1a;TAL&#xff08;Task alignment learning&#xff0c;TOOD提出&#xff09;损失函数分类损失框回归损失目标损失行业有用改进自蒸馏图像灰度边界填充量化及部署实验消…...

【factoryio】使用SCL编写 <机械手控制> 程序

使用虚拟工厂软件和博图联合仿真来编写【scl】机械手控制程序 文章目录 目录 文章目录 前言 二、程序编写 1.机械手运行部分 2.启动停止部分 3.急停复位部分 三、完整代码 总结 前言 在前面我们一起写过了许多案例控制的编写&#xff0c;在这一章我们一起来编写一下一个…...

FanControl风扇控制:3分钟掌握专业级Windows散热管理终极指南

FanControl风扇控制&#xff1a;3分钟掌握专业级Windows散热管理终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...

Promises/A+性能优化指南:让你的异步代码运行得更快

Promises/A性能优化指南&#xff1a;让你的异步代码运行得更快 【免费下载链接】promises-spec An open standard for sound, interoperable JavaScript promises—by implementers, for implementers. 项目地址: https://gitcode.com/gh_mirrors/pr/promises-spec 在Ja…...

WinGet安装工具:PowerShell自动化部署的架构解析与实践指南

WinGet安装工具&#xff1a;PowerShell自动化部署的架构解析与实践指南 【免费下载链接】winget-install Install WinGet using PowerShell! Prerequisites automatically installed. Works on Windows 10/11 and Server 2019/2022. 项目地址: https://gitcode.com/gh_mirror…...

基于MCP协议与RAG技术构建智能聊天应用:架构解析与实战指南

1. 项目概述&#xff1a;一个基于MCP协议的RAG聊天应用最近在开源社区里&#xff0c;一个名为gogabrielordonez/mcp-ragchat的项目引起了我的注意。乍一看标题&#xff0c;它融合了当下两个非常热门的技术概念&#xff1a;MCP和RAG。对于从事AI应用开发&#xff0c;特别是希望构…...

吃透护网面试!HVV 行动全套面试题目及答案,网安新人入门进阶必备

本文全面整理网络安全面试题&#xff0c;涵盖HVV、OWASP Top 10漏洞原理与修复方法。详细讲解内网渗透技术、权限维持方法、Windows/Linux系统提权技巧&#xff0c;以及渗透测试流程和应急响应策略。还包含红蓝对抗概念、漏洞挖掘经验、常见中间件漏洞和安全基础知识&#xff0…...

对抗测试框架:用字节码增强与混沌工程提升系统韧性

1. 项目概述&#xff1a;一个对抗测试的“剧院”最近在开源社区里&#xff0c;我注意到一个名字挺有意思的项目&#xff0c;叫nanami7777777/anti-test-theater。乍一看&#xff0c;这个标题有点让人摸不着头脑——“反测试剧院”&#xff1f;测试和剧院能扯上什么关系&#xf…...

国家十四五课题背书,镜像视界无感定位解决ReID跨镜全场景痛点

国家十四五课题背书&#xff0c;镜像视界无感定位解决ReID跨镜全场景痛点在数字孪生、视频孪生技术全面落地的当下&#xff0c;全域跨镜目标追踪与精准定位已成为智慧安防、智慧园区、智慧港口、军工厂管控、危化品园区管理等领域的核心刚需。传统跨镜追踪技术长期依赖ReID&…...

Bash脚本集成AI:实现自然语言到命令行的自动化运维工具

1. 项目概述&#xff1a;当Bash脚本遇见AI&#xff0c;自动化运维的新范式最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Hezkore/bash-ai”。光看名字&#xff0c;你可能会有点懵&#xff1a;Bash脚本和AI&#xff0c;这两个看似八竿子打不着的玩意儿&#xff0c;怎么…...

从0到4倍:一次产品冷启动的完整复盘

近期终于有了大块的时间&#xff0c;打算把自己做开发者关系的一些经历都梳理出来。背景&#xff1a;我们做了一个类似 Windows 注册表的配置管理模块&#xff0c;并在上面增加了配置叠加和分层权限管控。它的核心价值是这样的&#xff1a;之前之后系统集成团队想改某个应用的行…...

代码审查时最该关注的不是语法,而是这五个“坏味道”

“这段代码能跑&#xff0c;但总觉得哪里不对劲。”如果你在审查代码时有过这种感觉&#xff0c;说明你已经嗅到了代码的坏味道。作为软件测试从业者&#xff0c;我们往往比开发人员更早感受到坏味道带来的痛苦——一个看似简单的变更导致回归测试大面积失败&#xff0c;一个边…...