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

Docker 构建镜像并搭建私人镜像仓库教程

构建镜像教程

步骤 1:安装 Docker

#在安装 Docker 之前,建议先更新系统软件包。
sudo yum update -y

# 移除旧的Docker版本和Podman、runc软件包及其相关依赖。
yum remove -y docker docker-client docker-client-latest docker-ce-cli docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine podman runc

#清理旧缓存并重新生成
yum clean all
yum makecache

# 安装必要的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 指定版本安装Docker
yum install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io

# 启动并设置Docker开机自启
sudo systemctl start docker
sudo systemctl enable docker

#使用以下命令验证 Docker 是否安装成功:
docker --version

# 安装 wget工具
yum install -y wget

# 关闭并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld

# 禁用SELinux 策略
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

#查看Docker服务的状态
sudo systemctl status docker

#添加镜像加速器
# 创建目录
mkdir -p /etc/docker
# 复制内容
tee /etc/docker/daemon.json <<-'EOF'
{
   "registry-mirrors": [
       "http://hub-mirror.c.163.com",
       "https://mirrors.tuna.tsinghua.edu.cn",
       "http://mirrors.sohu.com",
       "https://ustc-edu-cn.mirror.aliyuncs.com",
       "https://2yzmpomi.mirror.aliyuncs.com",
       "https://ccr.ccs.tencentyun.com",
       "https://docker.m.daocloud.io",
       "https://docker.awsl9527.cn",
       "https://do.nark.eu.org",
       "https://dc.j8.work",
       "https://dockerproxy.com",
       "https://docker.mirrors.ustc.edu.cn",
       "https://docker.nju.edu.cn",
       "https://docker.1panel.live/",
       "https://noohub.ru",
       "https://huecker.io",
       "https://dockerhub.timeweb.cloud",
       "http://hub.urlsa.us.kg",
       "http://hub.haod.eu.org",
       "http://hub.chxza.eu.org",
       "http://ccoc.eu.org"
   ]
}
{
  "dns": ["8.8.8.8", "8.8.4.4"]
}
EOF
# 重新加载配置
systemctl daemon-reload
# 重启Docker
systemctl restart docker

#通过运行hello-world 映像来验证是否正确安装了Docker Engine 。
sudo docker run hello-world

#显示 Docker 系统信息
docker info

步骤 2:编写 Dockerfile

#Dockerfile 是 Docker 镜像构建的核心文件,它包含了如何创建镜像的所有指令,一定要注意,该文件名必须是Dockerfile且无后缀。
#示例 Dockerfile,创建一个新的目录并进入:
mkdir mydockerapp
cd mydockerapp

#在该目录下创建 Dockerfile 文件:
vim Dockerfile

#然后你可以编辑 Dockerfile 内容。例如,下面的 Dockerfile 安装了一个简单的 Apache HTTP 服务器:

# 使用官方的 CentOS 镜像作为基础镜像
FROM centos:8# 更新软件包并安装 Apache HTTP 服务器
RUN yum -y update && yum install -y httpd# 将当前目录下的代码复制到容器的 /var/www/html 目录
COPY ./index.html /var/www/html/# 设置容器启动时运行 Apache 服务
CMD ["httpd", "-D", "FOREGROUND"]# 暴露容器的 80 端口
EXPOSE 80

#这个 Dockerfile 会:
#使用 CentOS 8 镜像作为基础镜像
#安装 Apache HTTP 服务器
#将当前目录下的 index.html 文件复制到容器中
#设置容器启动时运行 Apache HTTP 服务器
#暴露容器的 80 端口

步骤 3:构建 Docker 镜像

#在包含 Dockerfile 文件的目录下,使用以下命令构建 Docker 镜像:
docker build -t myapacheimage .

# -t myapacheimage 选项为你的镜像指定标签(即镜像的名字)。
# . 表示 Dockerfile 文件所在的当前目录。
#构建过程中,Docker 会逐步执行 Dockerfile 中的指令,并构建镜像。完成后,你可以使用以下命令查看镜像列表:
docker images
#你应该能够看到名为 myapacheimage 的新镜像。

步骤 4:运行 Docker 容器

#构建完成镜像后,你可以使用以下命令启动一个容器:
docker run -d -p 8080:80 myapacheimage

#-d 表示在后台运行容器。
#-p 8080:80 将主机的 8080 端口映射到容器的 80 端口。
#此时,你可以通过访问 http://localhost:8080 来查看 Apache 服务器是否成功启动并显示 index.html 页面。

步骤 5:管理 Docker 容器

#使用以下命令查看所有正在运行的容器:
docker ps

#要停止容器,可以使用以下命令:
docker stop <container_id>
#你可以通过 docker ps 命令获取容器的 ID。

#停止容器后,可以删除容器:
docker rm <container_id>
#如果你不再需要镜像,可以使用以下命令删除它:
docker rmi <image_id>

步骤 6:总结

在龙蜥操作系统 8.9 上构建 Docker 镜像的步骤主要包括:

1、安装 Docker。
2、编写 Dockerfile。
3、使用 docker build 命令构建镜像。
4、使用 docker run 命令运行容器。
5、使用 docker ps 和 docker stop 等命令管理容器。

Dockerfile 常见指令的总结表格:

指令描述示例
FROM指定基础镜像FROM centos:8
LABEL为镜像添加元数据LABEL maintainer="example@example.com"
RUN执行命令并在镜像中创建层RUN yum update -y && yum install -y httpd
COPY将文件或目录从构建上下文复制到容器内COPY ./myapp /usr/src/app
ADD类似 COPY,但支持解压 tar 文件和从 URL 下载文件ADD myapp.tar.gz /usr/src/app
WORKDIR设置工作目录WORKDIR /usr/src/app
CMD设置容器启动时默认执行的命令或程序CMD ["httpd", "-D", "FOREGROUND"]
ENTRYPOINT设置容器启动时执行的命令,常与 CMD 配合使用ENTRYPOINT ["python", "app.py"]
EXPOSE声明容器将要监听的端口(仅用于文档化,不会自动暴露端口)EXPOSE 8080
VOLUME创建挂载点以便共享或持久化数据VOLUME ["/data"]
ENV设置环境变量ENV APP_ENV=production
ARG定义构建时可用的变量ARG VERSION=1.0
USER设置容器内的用户USER appuser
SHELL更改 RUN 指令所用的 shellSHELL ["/bin/bash", "-c"]
STOPSIGNAL设置容器停止时使用的信号STOPSIGNAL SIGTERM

搭建私人镜像仓库

步骤 1:准备环境

确保已安装 Docker,如果尚未安装 Docker,请参考之前的教程安装 Docker。
确保你的服务器有公网 IP 或者是一个内网 IP 可访问的服务器
需要有一台能够访问的服务器来托管镜像仓库。如果是在公司内网搭建私有镜像仓库,确保相关的内网机器能够访问该仓库。

步骤 2:拉取并启动 Docker Registry 镜像

Docker 官方提供了一个 registry 镜像,帮助你快速搭建私有镜像仓库。我们可以通过以下命令拉取并启动它。
拉取官方 Registry 镜像
docker pull registry:2

运行 Docker Registry 容器
启动一个 Docker 容器来运行镜像仓库,通常会使用端口 5000 来暴露仓库服务:
docker run -d -p 5000:5000 --name registry registry:2

这条命令会:
在后台启动一个 Docker 容器(-d)。
将容器的 5000 端口映射到主机的 5000 端口,这样你就可以通过 http://<your_server_ip>:5000 来访问仓库。
使用 registry:2 镜像启动私有仓库。
验证仓库是否启动成功

你可以通过以下命令查看容器的状态:
docker ps
如果仓库容器运行正常,你应该看到类似如下输出:

CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                  NAMES
a1b2c3d4e5f6   registry:2     "/bin/registry serve …"   5 seconds ago   Up 4 seconds   0.0.0.0:5000->5000/tcp registry

步骤 3:配置客户端访问仓库

默认情况下,Docker 不允许使用 HTTP 访问私有仓库,因此我们需要配置 Docker 客户端以允许 HTTP 协议的访问。
编辑 Docker 配置文件
编辑 /etc/docker/daemon.json 配置文件,允许 Docker 客户端访问私有仓库。文件内容如下:
{
  "insecure-registries": ["<your_server_ip>:5000"]
}

其中,<your_server_ip> 是你搭建私有仓库的服务器 IP 地址。

重启 Docker 服务
修改完成后,重启 Docker 服务,使配置生效:
sudo systemctl restart docker

步骤 4:将镜像推送到私人仓库

构建 Docker 镜像
例如,构建一个简单的镜像:

docker build -t <your_server_ip>:5000/myimage .
这里的 <your_server_ip> 是你搭建仓库的服务器 IP 地址,myimage 是你自定义的镜像名称。

登录到私有仓库
你可能需要登录到私有仓库。使用以下命令进行登录:

docker login <your_server_ip>:5000

默认情况下,这个仓库不需要认证。如果你需要启用认证,可以参考 Docker 官方文档来配置用户名和密码。
推送镜像到私有仓库
使用以下命令将镜像推送到私有仓库:

docker push <your_server_ip>:5000/myimage
如果一切正常,Docker 会将镜像上传到你的私有仓库。

步骤 5:从私人仓库拉取镜像

从私有仓库拉取镜像
当你需要从私人仓库拉取镜像时,只需使用 docker pull 命令:

docker pull <your_server_ip>:5000/myimage
这样,你就能从你自己搭建的 Docker 私有仓库中拉取镜像。

步骤 6:配置 TLS (可选)

如果你希望通过 HTTPS 而不是 HTTP 来访问你的私有仓库,这里提供一个简单的配置方法。
生成 SSL 证书
如果你没有现成的 SSL 证书,可以通过以下命令生成自签名证书(只用于测试):

mkdir -p /certs
openssl req -newkey rsa:4096 -nodes -keyout /certs/domain.key -x509 -out /certs/domain.crt

更新 Registry 配置
停止当前的 Registry 容器:

docker stop registry
启动一个新的 Registry 容器,挂载 SSL 证书:

docker run -d -p 5000:5000 --name registry \
  -v /certs/domain.crt:/certs/domain.crt \
  -v /certs/domain.key:/certs/domain.key \
  -e REGISTRY_HTTP_SECRET=<secret> \
  -e REGISTRY_HTTP_HEADERS_X_FORWARDED_PROTO=https \
  registry:2

配置 Docker 客户端
确保你已经配置 Docker 客户端以支持 HTTPS(和证书),并按照之前的步骤更新了 /etc/docker/daemon.json 文件。

步骤 7:清理和管理镜像

查看私有仓库中的镜像
你可以查看仓库中的所有镜像。使用以下命令列出仓库中所有镜像:

curl http://<your_server_ip>:5000/v2/_catalog

删除镜像
如果你需要删除某个镜像,可以通过以下命令:
docker rmi <your_server_ip>:5000/myimage
你可能还需要在仓库中手动删除镜像数据,以释放存储空间。

总结

搭建 Docker 私有镜像仓库的步骤主要包括:
使用官方 registry 镜像启动私有仓库。
配置 Docker 客户端以访问私有仓库。
构建镜像并推送到私有仓库。
从私有仓库拉取镜像。
如果需要,还可以进一步配置 HTTPS 和认证。这样,你就可以在自己的服务器上管理 Docker 镜像,享受私有化的镜像仓库服务了。

 

相关文章:

Docker 构建镜像并搭建私人镜像仓库教程

构建镜像教程 步骤 1&#xff1a;安装 Docker #在安装 Docker 之前&#xff0c;建议先更新系统软件包。 sudo yum update -y # 移除旧的Docker版本和Podman、runc软件包及其相关依赖。 yum remove -y docker docker-client docker-client-latest docker-ce-cli docker-commo…...

蓝牙耳机降噪进化:从物理阻隔到声波抵消的跨越

目录 一、降噪技术的核心分类&#xff08;一&#xff09;被动降噪&#xff1a;物理屏障的“静音盾”&#xff08;二&#xff09;主动降噪&#xff1a;声波抵消的“黑科技”&#xff08;三&#xff09;混合降噪&#xff1a;双重技术的“强强联合” 二、细分技术及应用场景&#…...

23.PPT:校摄影社团-摄影比赛作品【5】

目录 NO12345​ NO6 NO7/8/9/10​ 单元格背景填充表格背景填充文本框背景填充幻灯片背景格式设置添加考生文件夹下的版式 NO12345 插入幻灯片和放入图片☞快速&#xff1a;插入→相册→新建相册→文件→图片版式→相框形状→调整边框宽度左下角背景图片&#xff1a;视图→…...

systemverilog的program和module的区别

1. 设计目的 module 硬件建模&#xff1a;用于描述数字电路的结构和行为&#xff08;如组合逻辑、时序逻辑、连线等&#xff09;。 层次化设计&#xff1a;支持模块化设计&#xff0c;可嵌套其他模块或接口&#xff08;interface&#xff09;。 仿真周期内持续存在&#xff1…...

AI大模型零基础学习(2):提示词工程进阶——让AI听懂你的“弦外之音“

从“基础对话”到“精准操控”的思维跃迁 一、为什么你的提问总被AI“误解”&#xff1f; 1.1 大模型的“思维盲区” 知识边界&#xff1a;ChatGPT等模型的训练数据截止于特定时间&#xff08;如2023年1月&#xff09;&#xff0c;无法主动获取最新资讯 文化差异&#xff1a;…...

如今物联网的快速发展对hmi的更新有哪些积极影响

一、功能更加丰富 物联网的快速发展使得 HMI&#xff08;人机界面&#xff09;能够连接更多的设备和系统&#xff0c;从而实现更加丰富的功能。例如&#xff0c;通过与传感器网络的连接&#xff0c;HMI 可以实时显示设备的运行状态、环境参数等信息&#xff0c;为用户提供更加…...

基于yolov11的阿尔兹海默症严重程度检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv11的阿尔兹海默症严重程度检测系统是一种创新的医疗辅助工具&#xff0c;旨在通过先进的计算机视觉技术提高阿尔兹海默症的早期诊断和病情监测效率。阿尔兹海默症是一种渐进性的神经退行性疾病&#xff0c;通常表现为认知障碍、记忆丧失和语言障碍等症状…...

redis之GEO 模块

文章目录 背景GeoHash 算法redis中的GeoHash 算法基本使用增加距离获取元素位置获取元素的 hash 值附近的元素 注意事项原理 背景 如果我们有需求需要存储地理坐标&#xff0c;为了满足高性能的矩形区域算法&#xff0c;数据表需要在经纬度坐标加上双向复合索引 (x, y)&#x…...

Java/Kotlin双语革命性ORM框架Jimmer(一)——介绍与简单使用

概览 Jimmer是一个Java/Kotlin双语框架 包含一个革命性的ORM 以此ORM为基础打造了一套综合性方案解决方案&#xff0c;包括 DTO语言 更全面更强大的缓存机制&#xff0c;以及高度自动化的缓存一致性 更强大客户端文档和代码生成能力&#xff0c;包括Jimmer独创的远程异常 …...

如何修改DNS解析?

DNS(域名系统)就像互联网的“电话簿”&#xff0c;负责将我们输入的网址转换为计算机能够理解的IP地址。如果DNS解析出现问题&#xff0c;访问网站就会受到影响。那我们该如何修改DNS解析呢?接下来&#xff0c;我们就来介绍一下这个话题。 为什么要修改DNS解析? 使用默认的…...

使用 POI-TL 和 JFreeChart 动态生成 Word 报告

文章目录 前言一、需求背景二、方案分析三、 POI-TL JFreeChart 实现3.1 Maven 依赖3.3 word模板设置3.2 实现代码 踩坑 前言 在开发过程中&#xff0c;我们经常需要生成包含动态数据和图表的 Word 报告。本文将介绍如何结合 POI-TL 和 JFreeChart&#xff0c;实现动态生成 W…...

Python的那些事第十五篇:数据分析中的“三剑客”NumPy、Pandas与Matplotlib

数据分析中的“三剑客”&#xff1a;NumPy、Pandas与Matplotlib 在数据分析的世界里&#xff0c;有三位“大侠”常常携手并肩&#xff0c;共同应对各种复杂的数据挑战。它们就是NumPy、Pandas和Matplotlib。这三位“大侠”各怀绝技&#xff0c;相互配合&#xff0c;让数据分析…...

25/2/7 <机器人基础> 牛顿-欧拉递推公式,开闭环

牛顿-欧拉递推公式是用于计算刚体动力学中&#xff0c;刚体的角速度和角加速度的递推关系。这个公式是牛顿第二定律和欧拉旋转定理的结合&#xff0c;适用于描述刚体在空间中的旋转运动。 对于一个刚体&#xff0c;设其在某时刻的角速度为 ω&#xff0c;角加速度为 α&#xf…...

vue3父子组件传值方式

父子组件传值方式 在 Vue 3 中&#xff0c;父子组件之间传值主要有以下几种常见方式&#xff0c;下面将详细介绍并给出演示代码。 1. 父组件向子组件传值&#xff1a;使用 props 原理 props 是 Vue 中用于在父组件向子组件传递数据的机制。父组件通过在子组件标签上绑定属性…...

树和二叉树_6

树和二叉树_6 一、leetcode-105二、题解1.引库2.代码 一、leetcode-105 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节…...

使用wpa_supplicant和wpa_cli 扫描wifi热点及配网

一&#xff1a;简要说明 交叉编译wpa_supplicant工具后会有wpa_supplicant和wpa_cli两个程序生产&#xff0c;如果知道需要连接的wifi热点及密码的话不需要遍历及查询所有wifi热点的名字及信号强度等信息的话&#xff0c;使用wpa_supplicant即可&#xff0c;否则还需要使用wpa_…...

个人职业发展——效率为王:AI赋能前端开发

在竞争激烈的IT行业&#xff0c;个人职业发展至关重要。而提升工作效率&#xff0c;无疑是加速职业发展的关键引擎。对于前端开发者而言&#xff0c;面对日益复杂的项目需求、不断变化的技术栈以及大量重复性的工作&#xff0c;如何提升效率&#xff0c;成为一个亟待解决的难题…...

【Android】Android开发应用如何开启任务栏消息通知

Android开发应用如何开启任务栏消息通知 1. 获取通知权限2.编写通知工具类3. 进行任务栏消息通知 1. 获取通知权限 在 AndroidManifest.xml 里加上权限配置&#xff0c;如下。 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android…...

c语言:取绝对值

假设我们有一个 long 类型的变量 l&#xff0c;我们希望恢复其绝对值。以下是两种方法的对比&#xff1a; 方法1&#xff1a;使用条件语句 这个很好理解&#xff0c;负数时取负运算 &#xff0c;用于数值的符号反转。 long abs_value(long l) {if (l < 0) {return -l;} e…...

HTML应用指南:利用GET请求获取全国盒马门店位置信息

随着新零售业态的发展&#xff0c;门店位置信息的获取变得至关重要。作为新零售领域的先锋&#xff0c;盒马鲜生不仅在商业模式创新上持续领先&#xff0c;还积极构建广泛的门店网络&#xff0c;以支持其不断增长的用户群体。本篇文章&#xff0c;我们将继续探究GET请求的实际应…...

MongoDB 深度教程:当 NoSQL 遇上幽默

MongoDB 深度教程&#xff1a;当 NoSQL 遇上幽默 欢迎来到这个 MongoDB 的奇妙冒险&#xff01;如果你已经了解了 MongoDB 的基础知识&#xff0c;比如 CRUD 操作、数据库和集合的概念&#xff0c;但总觉得自己只是停留在门口徘徊&#xff0c;那么今天这篇教程就是为你量身定做…...

windows安装linux子系统【ubuntu】操作步骤

1.在windows系统中开启【适用于Linux的Windows子系统】 控制面板—程序—程序和功能—启用或关闭Windows功能—勾选适用于Linux的Windows子系统–确定 2.下载安装Linux Ubuntu 22.04.5 LTS系统 Ununtu下载链接 3.安装完Ununtu系统后更新系统 sudo apt update4.进入/usr/l…...

通过k8s请求selfsubjectrulesreviews查询权限

当前是通过kubelet进行查询 curl --cacert /etc/kubernetes/pki/ca.crt \ --cert /var/lib/kubelet/pki/kubelet-client-current.pem \ --key /var/lib/kubelet/pki/kubelet-client-current.pem \ -d - \ -H "Content-Type: application/json" \ -H Accept: applicat…...

如何参与开源项目

目的 就是说一下如何参与开源的项目&#xff0c;通过参与QXlsx来说明开源项目是如何参与的&#xff0c;其它的github上的开源项目&#xff0c;也是这样的流程。 关于GitHub: GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持Git作为唯一的版本库格式进行…...

Java 大视界 -- Java 大数据在智能金融监管中的应用与实践(77)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

使用deepseek快速创作ppt

目录 1.在DeekSeek生成PPT脚本2.打开Kimi3.最终效果 DeepSeek作为目前最强大模型&#xff0c;其推理能力炸裂&#xff0c;但是DeepSeek官方没有提供生成PPT功能&#xff0c;如果让DeepSeek做PPT呢&#xff1f; 有个途径&#xff1a;在DeepSeek让其深度思考做出PPT脚本&#xf…...

如何在Python中创建和访问列表

在Python中&#xff0c;列表&#xff08;list&#xff09;是一种用于存储一系列有序项目的数据结构。这些项目可以是不同类型的&#xff0c;比如整数、浮点数、字符串&#xff0c;甚至是其他列表&#xff08;形成嵌套列表&#xff09;。以下是如何在Python中创建和访问列表的基…...

多线程下jdk1.7的头插法导致的死循环问题

20250208 多线程下jdk1.7的头插法导致的死循环问题 多线程下jdk1.7的头插法导致的死循环问题 【新版Java面试专题视频教程&#xff0c;java八股文面试全套真题深度详解&#xff08;含大厂高频面试真题&#xff09;】 jdk1.7在hashmap扩容时使用的是头插法&#xff0c;所以扩容…...

低代码系统-插件功能分析( 某道云)

本文主要把其的插件进行了简单分析&#xff0c;不做业务上的梳理&#xff0c;不做推荐。 可大致分为&#xff1a; 群机器人 信息查询 智能识别 实名验证类 数据库类 通知类 通知类 aPaas增强 考勤同步 财务类 类别 插件名称 功能简介 群机器人类 某钉机器人 即在表单处完…...

手搓基于CNN的Chest X-ray图像分类

数据集Chest X-ray PD Dataset 数据集介绍 - 知乎https://zhuanlan.zhihu.com/p/661311561 CPU版本 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import Dataset, DataLoader from torchvision import transforms, models import …...

Golang 并发机制-7:sync.Once实战应用指南

Go的并发模型是其突出的特性之一&#xff0c;但强大的功能也带来了巨大的责任。sync.Once是由Go的sync包提供的同步原语。它的目的是确保一段代码只执行一次&#xff0c;而不管有多少协程试图执行它。这听起来可能很简单&#xff0c;但它改变了并发环境中管理一次性操作的规则。…...

java nio 底层使用的是select 、poll还是epoll

在 Java NIO 中&#xff0c;底层使用的 I/O 多路复用机制取决于操作系统和 JDK 的实现。 &#x1f680; Java NIO 底层使用机制概述 操作系统默认多路复用机制系统调用Linuxepollepoll_create、epoll_ctl、epoll_waitWindowsselect 或 WSAPollselect() 或 WSAPoll()macOS / B…...

Kotlin协程详解——协程取消与超时

目录 一、协程取消 1.取消协程的执行 2.使计算代码可取消 3.在finally中释放资源 4.运行不能取消的代码块 二、协程超时 异步超时与资源管理 一、协程取消 1.取消协程的执行 在一个长时间运行的应用程序中&#xff0c;你也许需要对你的后台协程进行细粒度的控制。 比如…...

双向链表、内核链表和gdb(20250208)

单向链表 节点 数据域 指针域&#xff08;后继节点&#xff09; 双向链表 相比于单项指针&#xff0c;双向指针存有前驱节点的地址&#xff0c;使链表的灵活性更高。 内核链表 在内核中 offsetof&#xff1a;获取结构体某个成员到结构体开头的偏移量container_of:根据结…...

全程Kali linux---CTFshow misc入门(38-50)

第三十八题&#xff1a; ctfshow{48b722b570c603ef58cc0b83bbf7680d} 第三十九题&#xff1a; 37换成1&#xff0c;36换成0&#xff0c;就得到长度为287的二进制字符串&#xff0c;因为不能被8整除所以&#xff0c;考虑每7位转换一个字符&#xff0c;得到flag。 ctfshow{5281…...

MySQL 8.0.41安装教程(2025年2月8号)

下载网址&#xff1a;https://www.mysql.com/cn/downloads/ 点击 我选择的是第二个离线安装 点击之后&#xff0c;选择直接下载&#xff1a; 下载完成双击&#xff1a; 我选择的是自定义安装&#xff1a; 右边默认已经存在我选择的8.0.41 点击红框中的&#xff0c;自定义安装路…...

【自学笔记】Deepseek的基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Deepseek知识点总览一、Deepseek简介二、Deepseek的三大适用模式1. 基础模型&#xff08;V3&#xff09;2. 深度思考&#xff08;R1&#xff09;3. 联网搜索模式 三…...

10N10-ASEMI中低压N沟道MOS管10N10

编辑&#xff1a;ll 10N10-ASEMI中低压N沟道MOS管10N10 型号&#xff1a;10N10 品牌&#xff1a;ASEMI 封装&#xff1a;TO-252 最大漏源电流&#xff1a;10A 漏源击穿电压&#xff1a;100V 批号&#xff1a;最新 RDS&#xff08;ON&#xff09;Max&#xff1a;135mΩ …...

2025年2月8日(Adafruit_PCA9685详细使用)

Adafruit_PCA9685 是一个 Python 模块&#xff0c;用于与 PCA9685 驱动芯片进行通信&#xff0c;该芯片常用于控制多个伺服电机。PCA9685 是一个 16 通道的 PWM&#xff08;脉宽调制&#xff09;驱动器&#xff0c;常用于需要精确控制多个伺服电机的应用。 以下是详细的使用方…...

MR30分布式IO模块:驱动智能制造工厂的工业互联与高效控制新范式

在工业4.0与智能制造浪潮的推动下&#xff0c;传统制造业正经历着从“机械驱动”向“数据驱动”的深刻转型。作为工业数据连接领域的领军者&#xff0c;明达技术凭借其自主研发的MR30分布式IO模块&#xff0c;以创新的技术架构与卓越的性能表现&#xff0c;为全球制造企业构建了…...

Reqable使用实践

一、背景 日常开发中&#xff0c;难免要抓取请求数据&#xff0c;查看接口数据&#xff0c;从而更好定位问题&#xff0c;基于这个原因&#xff0c;查找了一些抓包工具&#xff0c;例如&#xff1a; HttpCanary、 Steam 、Fiddler等&#xff0c;不是要钱&#xff0c;就是只对苹…...

数据可视化基本套路总结

首先从维基百科上搬出数据可视化的概念&#xff1a; 数据可视化是关于数据之视觉表现形式的研究&#xff1b;其中&#xff0c;这种数据的视觉表现形式被定义为一种以某种概要形式抽提出来的信息&#xff0c;包括相应信息单位的各种属性和变量。 用人话简单来说&#xff0c;数据…...

TensorFlow域对抗训练DANN神经网络分析MNIST与Blobs数据集梯度反转层提升目标域适应能力可视化...

全文链接&#xff1a;https://tecdat.cn/?p39656 本文围绕基于TensorFlow实现的神经网络对抗训练域适应方法展开研究。详细介绍了梯度反转层的原理与实现&#xff0c;通过MNIST和Blobs等数据集进行实验&#xff0c;对比了不同训练方式&#xff08;仅源域训练、域对抗训练等&am…...

DNS劫持和HTTPDNS

DNS 劫持是一种网络攻击手段&#xff0c;攻击者通过篡改域名系统&#xff08;DNS&#xff09;解析过程&#xff0c;将用户请求的域名重定向到恶意网站或其他不正确的地址。这种攻击可以用于多种目的&#xff0c;例如窃取用户数据、传播恶意软件或进行钓鱼攻击。 举个例子 假设…...

云原生微服务

能够认识到云原生微服务对应用程序设计的影响&#xff0c;描述无状态微服务&#xff0c;并比较单体和微服务架构。要充分利用运营模式&#xff0c;您需要以不同的方式思考应用程序设计。您需要考虑云原生微服务。此图像显示了一个应用程序&#xff0c;该应用程序被设计为小型微…...

【deepSeek R1】Ollama 更改模型安装位置 以及应用安装位置

【deepSeek R1】Ollama 更改模型安装位置 以及应用安装位置 本地版部署deepSeek R1 可以参考文章 3分钟教你搭建属于自己的本地大模型 DeepSeek R1 Ollama 是一个开源工具&#xff0c;旨在帮助用户轻松在本地计算机上运行、部署和管理大型语言模型&#xff08;LLMs&#xff09;…...

windows + visual studio 2019 使用cmake 编译构建静、动态库并调用详解

环境 windows visual studio 2019 visual studio 2019创建cmake工程 1. 静态库.lib 1.1 静态库编译生成 以下是我创建的cmake工程文件结构&#xff0c;只关注高亮文件夹部分 libout 存放编译生成的.lib文件libsrc 存放编译用的源代码和头文件CMakeLists.txt 此次编译CMak…...

使用Feign代替RestTemplet

Feign RestTemplet存在的问题 String url "http: //userservice/user/" order.getUserId(); User user restTemplate.getFor0bject(url, User.class);可读性差参数复杂URL难以维护 Feign声明式的Http客户端&#xff0c;官方地址&#xff1a;https://github.com…...

苹果笔记本安装jmeter

下载并安装jmeter即可&#xff0c;jmeter官网下载地址&#xff1a;Apache JMeter - Download Apache JMeter 参考以下文章&#xff1a;“https://blog.csdn.net/weixin_51664828/article/details/145008755”...

设备通过国标GB28181接入EasyCVR,显示在线但视频无法播放的原因排查

安防监控EasyCVR平台支持多种视频源接入&#xff0c;包括但不限于IP摄像头、NVR、编码器、流媒体服务器等。平台采用高效的视频流接入技术&#xff0c;支持大规模视频流的并发接入&#xff0c;确保视频流的稳定性和流畅性。 有用户反馈&#xff0c;项目现场使用国标GB28181接入…...