Docker系列(四):容器操作全栈技术指南 --- 从入门到生产级管控
引言
本指南以全链路视角拆解Docker技术栈,通过四大核心模块构建从入门到进阶的知识体系,助您系统性掌握容器化落地的关键能力。
容器生命周期管理(一)从创建、启停到资源清理,夯实容器操作的基础语法与核心场景;镜像管理(二)深入镜像的获取、构建与版本控制,打造标准化、轻量化的应用交付单元;网络与存储配置(三)破解容器间通信与数据持久化难题,搭建高可用服务架构的底层支撑;进阶操作技巧(四)则通过多容器编排、资源治理与高效调试,解锁复杂业务场景的规模化管控能力。
各章节以“场景驱动-工具解析-实践验证”为脉络,覆盖开发调试、生产部署与运维监控全流程。无论您是初探容器化的开发者,还是寻求效能突破的运维工程师,均可通过本指南构建清晰的Docker技术全景图,实现从单机实验到分布式集群的平滑过渡,最终达成敏捷交付、资源优化与系统稳定的终极目标。
最后,如果大家喜欢我的创作风格,请大家多多关注up主,你们的支持就是我创作最大的动力!如果各位观众老爷觉得我哪些地方需要改进,请一定在评论区告诉我,马上改!在此感谢大家了。
各位观众老爷,本文通俗易懂,快速熟悉Docker,收藏本文,关注up不迷路,后续将持续分享Docker纯干货(请观众老爷放心,绝对又干又通俗易懂)。请多多关注、收藏、评论,评论区等你~~~
文章目录
- 引言
- 一、Docker容器生命周期管理
- 1.1 容器创建与启动
- 1.1.1 `docker run` 参数详解
- 1.1.2 交互式容器与一次性任务容器
- 1.2 容器状态监控与操作
- 1.2.1 查看容器列表
- 1.2.2 容器操作命令
- 1.3 容器删除与清理
- 1.3.1 删除单个容器
- 1.3.2 批量清理停止的容器
- 二、Docker镜像管理
- 2.1 镜像的获取与存储
- 2.1.1 从Docker Hub拉取镜像 `docker pull`
- 2.1.2 导出与导入镜像 `docker save`/`docker load`
- 2.2 构建自定义镜像
- 2.2.1 `Dockerfile` 核心指令
- 2.2.2 多阶段构建优化镜像体积
- 2.3 镜像版本管理
- 2.3.1 镜像标签与版本控制 `docker tag`
- 2.3.2 删除无用镜像 `docker rmi`与`docker image prune`
- 2.4 综合示例
- 三、容器网络与存储配置
- 3.1 网络模式与通信
- 3.1.1 默认桥接网络(bridge)与主机网络(host)
- 3.1.2 自定义网络实现容器间互通
- 3.2 端口映射与数据卷
- 3.2.1 单端口映射与范围映射
- 3.2.2 持久化数据管理
- 3.3 跨容器数据共享
- 3.3.1 通过共享Volume实现数据同步
- 3.3.2 数据卷备份与迁移实践
- 四、Docker进阶操作技巧
- 4.1 多容器编排(Docker Compose)
- 4.1.1 编写 `docker-compose.yml` 定义服务
- 4.1.2 一键启动/停止多容器环境
- 4.2 资源限制与监控
- 4.2.1 限制容器内存与CPU
- 4.2.2 实时监控容器资源
- 4.3 日志与调试技巧
- 4.3.1 查看容器日志
- 4.3.2 进入容器调试
- 4.4 综合应用示例
- 往期回顾 --- 往期专栏 和 系列博文
一、Docker容器生命周期管理
容器作为Docker技术的核心载体,其生命周期的高效管理是保障应用稳定运行与资源合理调度的关键。本章将系统解析容器从创建到销毁的全流程管理,涵盖核心操作命令、状态监控技巧及资源清理策略,帮助开发者掌握容器动态管控的核心能力。
1.1 容器创建与启动
Docker 容器的核心操作是 docker run
,它用于创建并启动一个新容器。
1.1.1 docker run
参数详解
命令参数详解(完整表格总结)
参数 | 作用 | 用法示例 | 注意事项 |
---|---|---|---|
-d | 后台运行容器(守护进程模式) | docker run -d --name nginx nginx | 容器会在后台运行,需通过 docker logs 查看日志。 |
-it | 分配交互式终端(组合参数 -i + -t ) | docker run -it ubuntu /bin/bash | 退出终端默认会停止容器,按 Ctrl+P + Ctrl+Q 可退出并保持容器运行。 |
-p | 端口映射(宿主机端口:容器端口) | docker run -d -p 8080:80 nginx -p 192.168.1.100:8080:80 (指定IP) | 宿主机端口冲突会导致容器启动失败。支持 TCP/UDP(如 -p 8080:80/udp )。 |
-v | 数据卷/目录挂载(宿主机路径:容器路径) | docker run -v /宿主机/data:/容器/data nginx -v data_volume:/容器/data (命名卷) | 宿主机目录需存在,权限需与容器内一致。添加 :ro 设为只读(如 /data:ro )。 |
--name | 指定容器名称 | docker run --name my_nginx nginx | 名称需唯一,重复会报错。 |
--rm | 容器退出后自动删除 | docker run --rm alpine echo "Hello" | 适用于一次性任务,避免残留容器。 |
-e / --env | 设置环境变量 | docker run -e MYSQL_ROOT_PASSWORD=123 mysql --env-file .env (从文件读取) | 敏感信息建议通过文件传递(如 --env-file )。 |
--network | 指定容器网络模式 | docker run --network=host nginx --network=my_network (自定义网络) | host 模式直接使用宿主机网络栈,bridge 为默认桥接网络。 |
--restart | 容器退出时的重启策略 | --restart=always (总是重启) --restart=on-failure:3 (失败时最多重启3次) | 生产环境建议配置 always 或 on-failure 。 |
-m / --memory | 限制容器内存使用 | docker run -m 512m nginx (限制为512MB) | 单位支持 b 、k 、m 、g 。 |
--cpus | 限制容器使用的 CPU 核数 | docker run --cpus=1.5 nginx (使用1.5个CPU核) | 基于 Cgroups 实现,需宿主机支持。 |
--entrypoint | 覆盖镜像默认的入口命令 | docker run --entrypoint /bin/bash nginx | 优先级高于镜像的 ENTRYPOINT ,需在命令末尾指定参数。 |
--user | 指定容器内进程的运行用户 | docker run --user 1000 nginx (使用UID 1000) | 避免使用 root 用户,提升安全性。 |
--link | 连接其他容器(旧版网络互联,已不推荐) | docker run --link redis:redis_alias app | 建议使用自定义网络(如 docker network create )替代。 |
--expose | 暴露容器端口(不映射到宿主机) | docker run --expose 3306 mysql | 通常配合自定义网络使用,供其他容器访问。 |
--device | 将宿主机设备映射到容器 | docker run --device=/dev/sda:/dev/sda app | 慎用,直接访问硬件可能引发安全问题。 |
补充说明
-
组合使用示例
# 后台运行 + 端口映射 + 数据卷挂载 + 环境变量 docker run -d -p 3306:3306 \-v mysql_data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123 \--name mysql \mysql:latest
-
资源限制优先级
- 若同时指定
-m
和--memory-swap
,--memory-swap
需大于-m
(如-m 500m --memory-swap=1g
)。
- 若同时指定
-
数据卷挂载类型
-
匿名卷:
-v /容器路径
(自动生成随机宿主机目录)。 -
命名卷:
-v 卷名:/容器路径
(需先通过docker volume create
创建)。
-
-
网络模式详解
-
bridge
:默认桥接网络,容器间通过 IP 通信。 -
host
:共享宿主机网络栈,性能更高但安全性降低。 -
none
:无网络,仅本地回环接口。
-
1.1.2 交互式容器与一次性任务容器
-
交互式容器(
-it
进入Shell)通过
-it
参数进入容器的交互式终端(常用于调试):docker run -it --name debug ubuntu /bin/bash
容器会启动并直接进入 Bash 终端,退出后容器会停止。
-
一次性任务容器
执行单次命令后自动退出(适合脚本任务):
docker run --rm alpine echo "Hello World"
--rm
参数表示容器执行完毕后自动删除。
1.2 容器状态监控与操作
1.2.1 查看容器列表
-
查看运行中的容器
docker ps
显示容器 ID、名称、状态、端口映射等信息。
-
查看所有容器(包括已停止的)
docker ps -a
1.2.2 容器操作命令
-
启动容器
docker start my_nginx
-
停止容器
docker stop my_nginx
(优雅停止,发送 SIGTERM 信号)
-
强制停止容器
docker kill my_nginx
(立即终止,发送 SIGKILL 信号)
-
重启容器
docker restart my_nginx
-
暂停/恢复容器
docker pause my_nginx # 暂停容器进程 docker unpause my_nginx # 恢复运行
1.3 容器删除与清理
1.3.1 删除单个容器
-
删除已停止的容器
docker rm my_nginx
-
强制删除运行中的容器
docker rm -f my_nginx
-f
参数会强制停止并删除容器。
1.3.2 批量清理停止的容器
-
清理所有已停止的容器
docker container prune
确认后会自动删除所有处于停止状态的容器。
二、Docker镜像管理
镜像是容器化技术的基石,其高效管理直接决定了应用交付的标准化程度与部署的敏捷性。本章将系统讲解镜像的全生命周期管理,涵盖镜像获取、自定义构建、版本控制及资源优化,助力开发者打造轻量化、可复用的镜像资产。
2.1 镜像的获取与存储
镜像是Docker容器的基础,管理和维护镜像是容器化开发的核心环节。
2.1.1 从Docker Hub拉取镜像 docker pull
-
作用:从镜像仓库(默认Docker Hub)下载镜像到本地。
-
语法:
docker pull [镜像名称]:[标签]
-
示例:
# 拉取Ubuntu最新版(默认标签为latest) docker pull ubuntu# 拉取指定版本(如Python 3.9) docker pull python:3.9# 拉取Alpine轻量版Nginx docker pull nginx:alpine
-
关键点:
-
标签(Tag):标识镜像版本或变体(如
latest
、alpine
、1.23.4
)。 -
官方镜像:优先选择官方维护的镜像(如
nginx
、mysql
),而非第三方镜像。
-
2.1.2 导出与导入镜像 docker save
/docker load
-
导出镜像(保存为文件)
docker save -o [文件名.tar] [镜像名]:[标签] # 示例:导出nginx镜像 docker save -o nginx.tar nginx:alpine
- 用途:离线环境迁移或备份镜像。
-
导入镜像(从文件加载)
docker load -i [文件名.tar] # 示例:导入nginx.tar docker load -i nginx.tar
-
对比其他命令:
-
docker export
:导出容器文件系统(不包含元数据)。 -
docker import
:从容器快照创建镜像(可能丢失历史层)。
-
2.2 构建自定义镜像
注释: 关于 DockerFile 的内容,上一章节已经详细的进行讲解,请参照 Docker(三):超详细 “解剖” Dockerfile 和 多种创建容器方式,这里只进行关键步骤回忆,就不再过多进行赘述。
2.2.1 Dockerfile
核心指令
通过编写 Dockerfile
定义镜像构建步骤,常用指令如下:
指令 | 作用 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM ubuntu:20.04 |
COPY | 复制宿主机文件到镜像内 | COPY app.py /app/ |
RUN | 构建时执行命令(安装依赖、编译代码) | RUN apt-get update && apt-get install -y python3 |
CMD | 容器启动时执行的默认命令(可被覆盖) | CMD ["python3", "app.py"] |
WORKDIR | 设置工作目录(后续命令的默认路径) | WORKDIR /app |
ENV | 设置环境变量 | ENV PYTHONPATH=/app |
EXPOSE | 声明容器监听的端口(实际映射需通过 -p 参数) | EXPOSE 80 |
2.2.2 多阶段构建优化镜像体积
-
问题:直接构建可能导致镜像臃肿(包含编译工具和中间文件)。
-
方案:分阶段构建,最终仅保留运行所需文件。
-
示例:Go语言应用的多阶段构建
# 第一阶段:编译代码 FROM golang:1.18 AS builder WORKDIR /src COPY . . RUN go build -o /app# 第二阶段:仅保留二进制文件 FROM alpine:latest COPY --from=builder /app /app CMD ["/app"]
- 最终镜像仅包含Alpine和编译后的二进制文件,体积显著减小。
- 最终镜像仅包含Alpine和编译后的二进制文件,体积显著减小。
2.3 镜像版本管理
2.3.1 镜像标签与版本控制 docker tag
-
打标签
docker tag [原镜像ID] [新镜像名]:[新标签] # 示例:为镜像添加版本号 docker tag myapp:latest myapp:v1.2
-
语义化版本
latest
:默认标签(可能不稳定)。v1.2.3
:明确版本号(推荐生产环境使用)。dev
/test
:标识开发或测试版本。
2.3.2 删除无用镜像 docker rmi
与docker image prune
-
删除单个镜像
docker rmi [镜像名]:[标签] # 删除指定标签 docker rmi [镜像ID] # 强制删除(即使有容器依赖)
-
批量清理
# 删除所有悬空镜像(未被任何镜像引用的中间层) docker image prune# 删除未被使用的镜像(未被容器或标签引用) docker image prune -a
-
注意事项:
-
删除前确认镜像未被运行中的容器依赖。
-
定期清理可节省磁盘空间(尤其CI/CD环境)。
-
2.4 综合示例
# 拉取镜像、构建、打标签、清理全流程
docker pull node:16
docker build -t myapp:dev .
docker tag myapp:dev myapp:v1.0
docker image prune -f # 清理未使用的中间层镜像
三、容器网络与存储配置
网络与存储是容器化架构中连接服务与保障数据生命周期的两大支柱,直接影响应用的通信效率与数据可靠性。本章将系统解析容器网络模型的底层机制与存储方案的实践策略,打通容器间协作与数据持久化的核心链路。
3.1 网络模式与通信
3.1.1 默认桥接网络(bridge)与主机网络(host)
Docker 默认提供多种网络模式,直接影响容器的通信方式和性能。
-
桥接网络(bridge)
-
特点:
-
默认网络模式,每个容器分配独立 IP,通过虚拟网桥
docker0
连接。 -
容器间通过 IP 通信,默认隔离于宿主机网络(需端口映射才能对外暴露服务)。
-
-
适用场景:
多容器独立部署(如 Web 应用 + 数据库)。
-
操作示例:
# 默认桥接网络启动容器 docker run -d --name web nginx docker run -d --name db redis # 容器间需通过IP通信(需手动获取IP) docker exec web ping <db_container_ip>
-
-
主机网络(host)
-
特点:
-
容器直接共享宿主机的网络命名空间,使用宿主机 IP 和端口。
-
无需端口映射,性能更高,但牺牲了网络隔离性。
-
-
适用场景:
对网络性能要求极高的应用(如高频交易系统)。
-
操作示例:
docker run -d --network host --name nginx nginx # 直接访问宿主机IP的80端口 curl http://localhost:80
-
3.1.2 自定义网络实现容器间互通
通过自定义网络,可优化容器间通信(如 DNS 自动解析容器名称)。
-
创建自定义网络
docker network create --driver bridge my_network
-
启动容器并加入自定义网络
docker run -d --network my_network --name web nginx docker run -d --network my_network --name db redis
-
容器间直接通过名称通信
# 在web容器中直接ping db容器名称 docker exec web ping db
-
优势
- 自动 DNS 解析(无需手动管理 IP)。
- 支持网络隔离(不同网络间容器默认无法通信)。
3.2 端口映射与数据卷
3.2.1 单端口映射与范围映射
-
单端口映射
docker run -d -p 8080:80 nginx # 宿主机8080映射到容器80端口
- 用途:精确控制单个服务端口(如 Web 服务对外暴露)。
-
范围映射
docker run -d -p 8000-9000:8000-9000 my_app # 映射端口范围
- 用途:需要动态分配多个端口的应用(如 FTP 服务)。
- 用途:需要动态分配多个端口的应用(如 FTP 服务)。
3.2.2 持久化数据管理
-
Volume 挂载(Docker 管理的数据卷)
# 创建命名卷 docker volume create mysql_data # 挂载到容器 docker run -d -v mysql_data:/var/lib/mysql mysql
- 特点:数据完全由 Docker 管理,适合生产环境持久化存储。
-
Bind Mount 绑定目录(宿主机目录挂载)
docker run -d -v /宿主机/目录:/容器/目录 nginx
-
特点:直接操作宿主机文件,适合开发环境实时同步代码。
-
权限问题:若容器内进程无权限,需匹配宿主机目录权限(如
:ro
设为只读)。
-
3.3 跨容器数据共享
3.3.1 通过共享Volume实现数据同步
-
创建共享Volume并挂载到多个容器
# 创建共享卷 docker volume create shared_data# 容器A写入数据 docker run -d -v shared_data:/data --name writer alpine \sh -c "echo 'Hello' > /data/file.txt"# 容器B读取数据 docker run -it -v shared_data:/data --name reader alpine \cat /data/file.txt # 输出:Hello
- 应用场景:多容器共享配置文件、日志目录或数据库存储。
- 应用场景:多容器共享配置文件、日志目录或数据库存储。
3.3.2 数据卷备份与迁移实践
-
备份Volume数据
# 启动临时容器挂载Volume和备份目录 docker run --rm -v shared_data:/data -v /宿主机/备份目录:/backup alpine \tar czvf /backup/data.tar.gz /data
- 恢复数据
docker run --rm -v shared_data:/data -v /宿主机/备份目录:/backup alpine \tar xzvf /backup/data.tar.gz -C /
-
迁移Volume到其他主机
# 导出Volume内容 docker run --rm -v shared_data:/data alpine tar -czO /data > data.tar.gz# 目标主机导入 cat data.tar.gz | docker run -i -v shared_data:/data alpine tar -xzf - -C /data
四、Docker进阶操作技巧
容器化技术的进阶应用需要突破单容器管理的边界,转向复杂场景的规模化管控与精细化运维。本章聚焦多服务协同、资源治理与高效调试三大核心领域,解锁生产级容器化落地的关键能力。
4.1 多容器编排(Docker Compose)
Docker Compose 是简化多容器管理的核心工具,通过声明式 YAML 文件定义服务、网络和存储依赖。
4.1.1 编写 docker-compose.yml
定义服务
-
核心字段
version: "3.8" # Compose版本 services:web: # 服务名称image: nginx:alpine # 镜像ports:- "8080:80" # 端口映射volumes:- ./html:/usr/share/nginx/html # 目录挂载depends_on: # 服务依赖- dbdb:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: 123volumes:- mysql_data:/var/lib/mysql # 命名卷volumes:mysql_data: # 定义数据卷
-
关键指令
depends_on
:控制服务启动顺序(仅顺序,不等待服务就绪)。networks
:自定义网络(默认自动创建桥接网络)。restart
:定义容器重启策略(如always
、on-failure
)。
-
4.1.2 一键启动/停止多容器环境
-
启动所有服务
docker compose up -d # 后台启动 docker compose up --build # 重新构建镜像后启动
-
停止并清理资源
docker compose down # 停止并删除容器、网络 docker compose down -v # 同时删除关联的匿名卷
-
常用操作
docker compose logs -f web # 实时查看web服务日志 docker compose ps # 查看服务状态
4.2 资源限制与监控
4.2.1 限制容器内存与CPU
-
内存限制
docker run -d --memory=512m --memory-swap=1g --name app nginx
--memory
:最大可用内存(如512m
、2g
)。--memory-swap
:内存+交换分区总限制(需大于--memory
)。
-
CPU限制
docker run -d --cpus=1.5 --name cpu_app nginx # 使用1.5个CPU核 docker run -d --cpuset-cpus="0-2" --name pinned_app nginx # 绑定到0-2号CPU
4.2.2 实时监控容器资源
-
查看实时资源占用
docker stats # 显示所有容器资源使用情况 docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" # 自定义输出格式
-
输出字段
CPU %
:CPU 使用率。MEM USAGE/LIMIT
:内存使用量与限制值。NET I/O
:网络流量。
-
4.3 日志与调试技巧
4.3.1 查看容器日志
-
实时追踪日志
docker logs -f --tail=100 web_container # 持续输出最后100行日志
-
过滤特定时间日志
docker logs --since=2023-01-01T00:00:00 --until=2023-01-02T12:00:00 web_container
-
JSON格式日志解析
docker logs --details web_container | jq . # 需安装jq工具
4.3.2 进入容器调试
-
进入运行中的容器
docker exec -it web_container /bin/bash # 启动交互式Bash docker exec -it web_container sh # Alpine镜像使用sh
-
执行单次命令
docker exec web_container ls /app # 查看容器内目录 docker exec web_container cat /etc/os-release # 查看容器系统信息
-
调试工具增强
# 安装调试工具(如curl、ping) docker exec -it web_container apk add curl # Alpine docker exec -it web_container apt-get update && apt-get install iputils-ping # Debian/Ubuntu
4.4 综合应用示例
# 使用Compose启动多容器环境并限制资源
version: "3.8"
services:web:image: nginxdeploy:resources:limits:cpus: "0.5"memory: 256Mports:- "80:80"# 启动后监控资源
docker compose up -d
docker stats
能够看到这里的观众老爷,无疑是对up的最大肯定和支持,在此恳求各位观众老爷能够多多点赞、收藏和关注。在这个合集中,未来将持续给大家分享关于Docker的多种常见开发实用操作。未来也将继续分享Docker、conda、ROS等等各种实用干货。感谢大家支持!
往期回顾 — 往期专栏 和 系列博文
往期专栏: Ubuntu系统教学系列
本期专栏: Docker
Docker系列(一):从依赖冲突到标准化交付!容器原理解析×SLAM跨平台实战×10分钟极速部署指南
Docker系列(二):从零构建容器环境|服务自启配置×镜像源加速×免sudo提权×避坑手册
Docker系列(三):深度剖析Dockerfile与图形化容器实战 — 3种容器构建方法对比与性能调优
相关文章:
Docker系列(四):容器操作全栈技术指南 --- 从入门到生产级管控
引言 本指南以全链路视角拆解Docker技术栈,通过四大核心模块构建从入门到进阶的知识体系,助您系统性掌握容器化落地的关键能力。 容器生命周期管理(一)从创建、启停到资源清理,夯实容器操作的基础语法与核心场景&…...
poppler_path 是用于 Python 库如 pdf2image 进行 PDF 转换时
poppler_path 是用于 Python 库如 pdf2image 进行 PDF 转换时指定 Poppler 可执行文件路径的参数。为了让程序正常工作,需要先安装 Poppler,并配置环境变量或在代码中设置 poppler_path。 以下是 Poppler 的安装与环境变量配置方法,按操作系…...
鸿蒙OSUniApp 开发的多图浏览器组件#三方框架 #Uniapp
使用 UniApp 开发的多图浏览器组件 在移动应用开发中,图片浏览器是非常常见且实用的功能,尤其是在社交、资讯、电商等场景下,用户对多图浏览体验的要求越来越高。随着 HarmonyOS(鸿蒙)生态的不断壮大,开发…...

MongoDB 错误处理与调试完全指南:从入门到精通
在当今数据驱动的世界中,MongoDB 作为最流行的 NoSQL 数据库之一,因其灵活的数据模型和强大的扩展能力而广受开发者喜爱。然而,与任何复杂系统一样,在使用 MongoDB 过程中难免会遇到各种错误和性能问题。本文将全面介绍 MongoDB 的…...
React从基础入门到高级实战:React 核心技术 - 表单处理与验证深度指南
React 表单处理与验证深度指南 在现代 Web 应用中,表单是用户与应用交互的核心方式之一。无论是注册、登录、结账还是数据提交,表单都扮演着至关重要的角色。React 作为一款流行的前端框架,提供了多种处理表单的工具和方法,帮助开…...

【C++】stack,queue和priority_queue(优先级队列)
文章目录 前言一、栈(stack)和队列(queue)的相关接口1.栈的相关接口2.队列的相关接口 二、栈(stack)和队列(queue)的模拟实现1.stack的模拟实现2.queue的模拟实现 三、priority_queu…...

ubuntu中上传项目至GitHub仓库教程
一、到github官网注册用户 1.注册用户 地址:https://github.com/ 2.安装Git 打开终端,输入指令git,检查是否已安装Git 如果没有安装就输入指令 sudo apt-get install git 二、上传项目到github 1.创建项目仓库 进入github主页,点击号…...
[Java实战]Spring Boot整合达梦数据库连接池配置(三十四)
[Java实战]Spring Boot整合达梦数据库连接池配置(三十四) 一、HikariCP连接池配置(默认) 1. 基础配置(application.yml) spring:datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://…...

windows 下用yolov5 训练模型 给到opencv 使用
windows 使用yolov5训练模型,之后opencv加载模型进行推理。 一,搭建环境 安装 Anaconda 二,创建虚拟环境并安装yolov5 conda create -n yolov5 python3.9 -y conda activate yolov5 git clone https://github.com/ultralytics/yolov5 cd …...

Spark集群架构解析:核心组件与Standalone、YARN模式深度对比(AM,Container,Driver,Executor)
一、核心组件定义与关系拆解 1. ApplicationMaster(AM) 定义:YARN 框架中的应用管理器,每个应用程序(如 Spark 作业)对应一个 AM。职责: 向 YARN 的 ResourceManager 申请资源(Con…...

Linux Kernel调试:强大的printk(二)
前言 如果你对printk的基本用法还不熟悉,请先阅读: Linux Kernel调试:强大的printk(一) 上一篇Linux Kernel调试:强大的printk(一)我们介绍了printk的基础知识和基本用法…...

Kafka Kraft模式集群 + ssl
文章目录 启用集群资源规划准备证书创建相关文件夹配置文件启动各Kafka节点 故障转移测试spring boot集成 启用集群 配置集群时关键就是提前梳理好需要的网络资源,完成对应server.properties文件的配置。在执行前先把这些梳理好,可以方便后面的配置&…...

[crxjs]自己创建一个浏览器插件
参考官方 https://crxjs.dev/vite-plugin/getting-started/vue/create-project 按照流程操作会失败的原因 是因为跨域的问题, 在此处添加 server: {host: "localhost",port: 5173,cors: true,headers: {"Access-Control-Allow-Origin": "*",}…...

类的设计模式——单例、工厂以及建造者模式
1.单例模式 1.1 饿汉模式 单例模式:一个类只能创建一个对象,这个设计模式可以保证系统中该类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。 饿汉模式指在程序初始化时就创建一个唯一的实例对象。适用…...

STM32之看门狗(IWDG)
一、看门狗外设的原理与应用 背景说明 随着单片机的发展,单片机在家用电器、工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛。然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连,相互影响,由于运行方式的…...
PyTorch实现MLP信用评分模型全流程
知识点回顾: 过拟合的判断:测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint,还包含训练状态 早停策略 浙大疏锦行 import torch import torch.nn as nn import torch.optim as optim from skle…...
语音识别——文本转语音
python自带的pytts说话人的声音比较机械,edge-tts提供了更自然的语音合成效果,支持多种语音选择。 项目地址:GitHub - rany2/edge-tts: Use Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or …...

跟着华为去变革 ——读《常变与长青》有感
《常变与长青》,是华为郭平总2024年上市的著作。走进这本书,我们能够清晰看到华为30多年的成长过程和伴随期间的变革历程:从一家设备代理商开始,起步蹒跚,砥砺前行,在闯过一个又一个磨难之后,成…...

图像分割技术的实现与比较分析
引言 图像分割是计算机视觉领域中的一项基础技术,其目标是将数字图像划分为多个图像子区域(像素的集合),以简化图像表示,便于后续分析和理解。在医学影像、遥感图像分析、自动驾驶、工业检测等众多领域,图…...

node.js配置变量
一、下载安装包 1、官网下载 大家可以在官网下载,适合自己电脑以及项目的需要的版本。 二、node.js安装 1、安装 双击下载的安装包文件,通常为 .exe 或 .msi 格式(Windows)或 .dmg 格式(Mac)。系统会…...

Ubuntu+Docker+内网穿透:保姆级教程实现安卓开发环境远程部署
文章目录 前言1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 前言 本文将详细介绍一种创新性的云开发架构:基于Ubuntu系统构建Android仿真容器环境,并集成安全隧道技…...
为什么需要清除浮动?清除浮动的方式有哪些?
导语: 在前端面试中,“清除浮动”几乎是每位面试官都会问到的基础题。虽然浮动已经不如 Flex 和 Grid 那么常用了,但它在许多老项目中仍然占有一席之地。理解浮动的机制、掌握清除浮动的方式,是面试中体现你前端基础扎实度的关键点。 一、面试主题概述 浮动(float)最初是…...
计算机网络学习20250526
SMTP——简单邮件传输协议 TCP 端口号:25 Alice给Bob发送邮件过程: Alice使用邮件代理程序写邮件给Bob用户代理把报文发给邮件服务器,放入报文队列中邮件服务器上SMTP客户端建立与Bob服务器上SMTP服务器的TCP连接经过初始的握手后ÿ…...
ArkUI:鸿蒙应用响应式与组件化开发指南(一)
文章目录 引言1.ArkUI核心能力概览1.1状态驱动视图1.2组件化:构建可复用UI 2.状态管理:从单一组件到全局共享2.1 状态装饰器2.2 状态传递模式对比 引言 鸿蒙生态正催生应用开发的新范式。作为面向全场景的分布式操作系统,鸿蒙的北向应用开发…...
YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点
YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点 引言 目标检测领域的最新进展表明,特征金字塔网络(FPN)的设计对模型性能具有决定性影响。本文详细介绍如何将**双向特征金字塔网络(BiFPN)**集成到YOLOv11的Neck部分,通过改进的多尺度特征融合机制…...
C/C++的OpenCV 进行轮廓提取
使用 C/C的OpenCV 进行轮廓提取 轮廓可以简单地描述为连接所有具有相同颜色或强度的连续点(沿着边界)的曲线。轮廓是形状分析以及对象检测和识别的有用工具。OpenCV 提供了非常方便的函数来查找和绘制轮廓。 本文将指导您完成使用 C 和 OpenCV 库从图像…...

计算机网络总结(物理层,链路层)
目录 第一章 概述 1.基本概念 2.- C/S模式,B/S模式,P2P模式 3.- LAN,WAN,MAN,PAN的划分 4.电路交换与分组交换,数据报交换和虚电路交换 第二章 物理层 1.信号编码:不归零编码,曼切斯特编码 2.几种复用技术的特…...

TIGER - 一个轻量高效的语音分离模型,支持人声伴奏分离、音频说话人分离等 支持50系显卡 本地一键整合包下载
TIGER 是一种轻量级语音分离模型,通过频段分割、多尺度及全频帧建模有效提取关键声学特征。该项目由来自清华大学主导研发,通过频率带分割、多尺度以及全频率帧建模的方式,有效地提取关键声学特征,从而实现高效的语音分离。 TIGER…...
yolov8,c++案例汇总
文章目录 引言多目标追踪案例人体姿态估计算法手势姿态估计算法目标分割算法 引言 以下案例,基于c,ncnn,yolov8既可以在windows10/11上部署, 也可以在安卓端部署, 也可以在嵌入式端部署, 服务器端可支持部署封装为DLL,支持c/c#/java端调用 多目标追踪案例 基于yolov8, ncnn,…...

无人机降落伞设计要点难点及原理!
一、设计要点 1. 伞体结构与折叠方式 伞体需采用轻量化且高强度的材料(如抗撕裂尼龙或芳纶纤维),并通过多重折叠设计(如三重折叠缝合)减少展开时的阻力,同时增强局部承力区域的强度。 伞衣的几何参数&am…...