Docker系列(四):容器操作全栈技术指南 --- 从入门到生产级管控

news2025/5/29 3:36:26

引言

本指南以全链路视角拆解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 + -tdocker 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次)
生产环境建议配置 alwayson-failure
-m / --memory限制容器内存使用docker run -m 512m nginx(限制为512MB)单位支持 bkmg
--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慎用,直接访问硬件可能引发安全问题。

补充说明

  1. 组合使用示例

    # 后台运行 + 端口映射 + 数据卷挂载 + 环境变量
    docker run -d -p 3306:3306 \
      -v mysql_data:/var/lib/mysql \
      -e MYSQL_ROOT_PASSWORD=123 \
      --name mysql \
      mysql:latest
    
  2. 资源限制优先级

    • 若同时指定 -m--memory-swap--memory-swap 需大于 -m(如 -m 500m --memory-swap=1g)。
  3. 数据卷挂载类型

    • 匿名卷-v /容器路径(自动生成随机宿主机目录)。

    • 命名卷-v 卷名:/容器路径(需先通过 docker volume create 创建)。

  4. 网络模式详解

    • 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):标识镜像版本或变体(如 latestalpine1.23.4)。

    • 官方镜像:优先选择官方维护的镜像(如 nginxmysql),而非第三方镜像。

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和编译后的二进制文件,体积显著减小。

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 rmidocker 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 服务)。

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:  # 服务依赖
          - db
      db:
        image: mysql:5.7
        environment:
          MYSQL_ROOT_PASSWORD: 123
        volumes:
          - mysql_data:/var/lib/mysql  # 命名卷
    
    volumes:
      mysql_data:  # 定义数据卷
    
    • 关键指令

      • depends_on:控制服务启动顺序(仅顺序,不等待服务就绪)。
      • networks:自定义网络(默认自动创建桥接网络)。
      • restart:定义容器重启策略(如 alwayson-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:最大可用内存(如 512m2g)。
    • --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: nginx
    deploy:
      resources:
        limits:
          cpus: "0.5"
          memory: 256M
    ports:
      - "80:80"

# 启动后监控资源
docker compose up -d
docker stats



结 束 语

能够看到这里的观众老爷,无疑是对up的最大肯定和支持,在此恳求各位观众老爷能够多多点赞、收藏和关注。在这个合集中,未来将持续给大家分享关于Docker的多种常见开发实用操作。未来也将继续分享Docker、conda、ROS等等各种实用干货。感谢大家支持!



往期回顾 — 往期专栏 和 系列博文


往期专栏: Ubuntu系统教学系列

本期专栏: Docker

Docker系列(一):从依赖冲突到标准化交付!容器原理解析×SLAM跨平台实战×10分钟极速部署指南

Docker系列(二):从零构建容器环境|服务自启配置×镜像源加速×免sudo提权×避坑手册

Docker系列(三):深度剖析Dockerfile与图形化容器实战 — 3种容器构建方法对比与性能调优

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2387124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MongoDB 错误处理与调试完全指南:从入门到精通

在当今数据驱动的世界中&#xff0c;MongoDB 作为最流行的 NoSQL 数据库之一&#xff0c;因其灵活的数据模型和强大的扩展能力而广受开发者喜爱。然而&#xff0c;与任何复杂系统一样&#xff0c;在使用 MongoDB 过程中难免会遇到各种错误和性能问题。本文将全面介绍 MongoDB 的…

【C++】stack,queue和priority_queue(优先级队列)

文章目录 前言一、栈&#xff08;stack&#xff09;和队列&#xff08;queue&#xff09;的相关接口1.栈的相关接口2.队列的相关接口 二、栈&#xff08;stack&#xff09;和队列&#xff08;queue&#xff09;的模拟实现1.stack的模拟实现2.queue的模拟实现 三、priority_queu…

ubuntu中上传项目至GitHub仓库教程

一、到github官网注册用户 1.注册用户 地址&#xff1a;https://github.com/ 2.安装Git 打开终端&#xff0c;输入指令git,检查是否已安装Git 如果没有安装就输入指令 sudo apt-get install git 二、上传项目到github 1.创建项目仓库 进入github主页&#xff0c;点击号…

windows 下用yolov5 训练模型 给到opencv 使用

windows 使用yolov5训练模型&#xff0c;之后opencv加载模型进行推理。 一&#xff0c;搭建环境 安装 Anaconda 二&#xff0c;创建虚拟环境并安装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&#xff08;AM&#xff09; 定义&#xff1a;YARN 框架中的应用管理器&#xff0c;每个应用程序&#xff08;如 Spark 作业&#xff09;对应一个 AM。职责&#xff1a; 向 YARN 的 ResourceManager 申请资源&#xff08;Con…

Linux Kernel调试:强大的printk(二)

前言 如果你对printk的基本用法还不熟悉&#xff0c;请先阅读&#xff1a; Linux Kernel调试&#xff1a;强大的printk&#xff08;一&#xff09; 上一篇Linux Kernel调试&#xff1a;强大的printk&#xff08;一&#xff09;我们介绍了printk的基础知识和基本用法&#xf…

Kafka Kraft模式集群 + ssl

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

[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 饿汉模式 单例模式&#xff1a;一个类只能创建一个对象&#xff0c;这个设计模式可以保证系统中该类只有一个实例&#xff0c;并提供一个访问它的全局访问点&#xff0c;该实例被所有程序模块共享。 饿汉模式指在程序初始化时就创建一个唯一的实例对象。适用…

STM32之看门狗(IWDG)

一、看门狗外设的原理与应用 背景说明 随着单片机的发展&#xff0c;单片机在家用电器、工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛。然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连&#xff0c;相互影响&#xff0c;由于运行方式的…

跟着华为去变革 ——读《常变与长青》有感

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

图像分割技术的实现与比较分析

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

node.js配置变量

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

Ubuntu+Docker+内网穿透:保姆级教程实现安卓开发环境远程部署

文章目录 前言1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 前言 本文将详细介绍一种创新性的云开发架构&#xff1a;基于Ubuntu系统构建Android仿真容器环境&#xff0c;并集成安全隧道技…

计算机网络总结(物理层,链路层)

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

TIGER - 一个轻量高效的语音分离模型,支持人声伴奏分离、音频说话人分离等 支持50系显卡 本地一键整合包下载

TIGER 是一种轻量级语音分离模型&#xff0c;通过频段分割、多尺度及全频帧建模有效提取关键声学特征。该项目由来自清华大学主导研发&#xff0c;通过频率带分割、多尺度以及全频率帧建模的方式&#xff0c;有效地提取关键声学特征&#xff0c;从而实现高效的语音分离。 TIGER…

无人机降落伞设计要点难点及原理!

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

20250526给荣品PRO-RK3566的Android13单独编译boot.img

./build.sh init ./build.sh -K ./build.sh kernel 20250526给荣品PRO-RK3566的Android13单独编译boot.img 2025/5/26 15:25 缘起&#xff1a;需要给荣品PRO-RK3566的Android13单独编译内核&#xff0c;但是不想编译整个系统。于是&#xff1a; 如果特调试某些特别的改动/文件…

构建版本没mac上传APP方法

在苹果开发者的app store connect上架Ios应用的时候&#xff0c;发现需要使用xode等软件来上传iOS的APP。 但是不管是xcode也好&#xff0c;transporter也好&#xff0c;还是命令行工具也好&#xff0c;都必须安装在mac电脑才能使用&#xff0c;。 假如没有mac电脑&#xff0…

如何解决大模型返回的JSON数据前后加上```的情况

环境说明 springboot 应用使用dashscope-sdk-java对接阿里百练 deepseek v3模型 问题表现 已经指定了输出json格式&#xff0c;但指令不明确&#xff0c;输出JSON格式的写法如下 注&#xff1a;提示词一开始是能正常功能的&#xff0c;但过了几天就出现了异常&#xff0c;原…