【Docker运维必修课】:为什么你删不掉镜像标签?真相只有老司机才知道

第一章:为什么你删不掉镜像标签?真相只有老司机才知道

当你在终端执行 docker rmi myimage:latest 却发现提示“Image is referenced in multiple repositories”时,是否曾感到困惑?这并非命令出错,而是 Docker 镜像存储机制的底层设计所致。同一个镜像可以被多个标签引用,而删除操作仅移除标签关联,不会直接清除镜像数据。

镜像与标签的多对一关系

Docker 中的镜像是基于内容寻址的,每个镜像都有唯一的 ID(如 sha256:abc123...),而标签(tag)只是指向该 ID 的可变指针。多个标签可能指向同一镜像 ID,因此仅删除一个标签并不会真正释放空间。
  • 标签是用户友好的别名,便于识别版本或环境
  • 镜像 ID 是不可变的哈希值,代表实际层堆栈
  • 只有当所有标签被移除且无容器引用时,镜像才会被垃圾回收

如何彻底清理未使用镜像

使用以下命令查看当前系统中所有镜像及其标签:

# 列出所有镜像,包括重复标签
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.Size}}"
若要强制删除某个镜像的所有标签引用,需指定镜像 ID 并添加 -f 参数:

# 强制删除特定镜像ID(会移除所有指向它的标签)
docker rmi -f sha256:abc123...
更推荐的做法是使用内置清理工具自动回收资源:

# 删除悬空镜像(dangling images)
docker image prune

# 删除所有未被使用的镜像、网络、构建缓存
docker system prune -a

常见误解对比表

行为实际效果
docker rmi myimage:dev仅移除 dev 标签,镜像仍可通过其他标签访问
docker rmi -f <IMAGE_ID>强制断开所有标签引用,准备垃圾回收
graph LR A[用户执行 docker rmi] --> B{是否存在其他标签?} B -->|是| C[仅删除当前标签] B -->|否| D[标记为可回收] D --> E[下次垃圾回收时释放磁盘空间]

第二章:Docker镜像标签机制深度解析

2.1 理解镜像ID与标签的映射关系

在Docker中,镜像ID是镜像的唯一标识,由哈希值生成,而标签(Tag)则是便于用户识别的别名。同一个镜像ID可被多个标签引用,但每个标签仅指向一个镜像ID。
标签与ID的绑定机制
标签并非镜像本身,而是指向某个镜像ID的指针。例如:
REPOSITORY    TAG       IMAGE ID       CREATED
nginx         latest    abc123def456   2 weeks ago
nginx         stable    abc123def456   2 weeks ago
上述输出表明,latest 和 stable 标签均指向同一镜像ID abc123def456,节省存储空间并提升管理效率。
多标签管理策略
  • 开发环境使用 :dev 标签进行快速迭代
  • 生产环境固定使用如 :v1.2.0 的版本化标签
  • 避免依赖浮动标签(如 :latest)于关键部署

2.2 标签背后的镜像层共享原理

Docker 镜像由多个只读层构成,这些层在不同镜像之间可以被共享,从而节省存储空间并加速镜像分发。每个标签(tag)实际上是指向特定镜像配置的指针,而该镜像可能与其他标签共用相同的底层。
镜像层的共享机制
当两个镜像基于相同的基础镜像(如 alpine:3.14),它们会共用相同的文件系统层。只有差异部分才会新增独立的层。
镜像标签镜像ID共享层数
nginx:1.21abc1233
nginx:1.21-alpinedef4562
alpine:3.14ghi7892
通过命令验证层共享
docker image inspect nginx:1.21 --format='{{.RootFS.Layers}}'
该命令输出镜像的各层摘要。若多个镜像包含相同层哈希,则说明实现了层共享。这种设计不仅优化了磁盘使用,也提升了拉取效率,因为已缓存的层无需重复下载。

2.3 为什么重复标签会导致删除失败

在资源管理系统中,标签(Tag)常用于标识和分类对象。当多个相同名称的标签被附加到同一资源时,系统在执行删除操作时无法明确判定应移除哪一个标签实例。
标签冲突示例
  • 资源A拥有两个名为“env=prod”的标签
  • 执行删除“env=prod”操作时,系统无法确定处理策略
  • 可能导致事务回滚或部分删除,引发一致性问题
底层逻辑分析
func DeleteTag(resourceID, tag string) error {
    tags := db.GetTags(resourceID)
    count := 0
    for _, t := range tags {
        if t == tag {
            count++
        }
    }
    if count > 1 {
        return errors.New("ambiguous tag deletion: multiple matches found")
    }
    // 执行删除逻辑
}
上述代码中,当检测到重复标签时直接返回错误,防止误删。核心参数 tag 必须唯一匹配,否则触发保护机制。

2.4 实际案例:同一镜像多个标签的删除实验

在容器镜像管理中,一个镜像可能关联多个标签(如 `v1.0`、`latest`),理解其删除行为对维护仓库整洁至关重要。
实验环境准备
使用本地搭建的私有 Registry 并推送一个镜像的多个标签:

docker tag nginx:latest localhost:5000/myapp:v1.0
docker tag nginx:latest localhost:5000/myapp:latest
docker push localhost:5000/myapp:v1.0
docker push localhost:5000/myapp:latest
上述命令将 `nginx:latest` 镜像打上两个标签并推送到本地 Registry,共享同一镜像 ID。
删除行为观察
执行删除操作后,通过 Registry API 检查层数据是否仍被引用:
操作保留的标签镜像层是否存在
删除 v1.0latest是
删除 latest无否
结果表明:只要至少一个标签指向镜像,其数据层就不会被清除。

2.5 使用docker image ls分析标签状态

查看本地镜像列表
执行 docker image ls 可列出所有本地镜像,帮助分析镜像的标签状态与资源占用情况。该命令输出包括仓库名、标签、镜像ID、创建时间及大小等关键信息。
docker image ls
# 输出示例:
# REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
# nginx         latest    605c77e18f8c   2 weeks ago    141MB
# redis         alpine    a1d8fa1b9caa   3 weeks ago    38.5MB
上述字段中,TAG 表示镜像标签,若为 <none> 则说明该镜像处于“悬空”(dangling)状态,通常为构建新版本后旧层未被清理所致。
筛选特定镜像
可通过添加过滤参数精准定位镜像:
  • -f dangling=true:列出所有无标签镜像
  • --filter reference='nginx:*':匹配指定仓库和标签模式

第三章:常见删除错误及应对策略

3.1 “image is referenced in multiple repositories” 错误剖析

Docker 镜像系统采用内容寻址机制,同一镜像可通过多个仓库标签引用。当执行 `docker rmi` 删除镜像时,若该镜像被多个仓库标签(repository:tag)共享,将触发此错误提示。
典型错误场景
Error response from daemon: image is referenced in multiple repositories: 
example.com/app:v1, private-registry/app:latest
上述输出表明同一镜像被两个不同仓库路径引用,直接删除会破坏引用一致性。
解决方案与操作逻辑
  • 使用 docker images --digests 查看镜像摘要(IMAGE ID 一致性)
  • 通过 docker rmi [REPOSITORY:TAG] 逐个移除标签而非直接删除镜像ID
  • 仅当所有标签移除后,镜像数据才会被真正清除
该机制保障了镜像层共享的安全性,避免误删影响其他依赖服务。

3.2 容器正在运行时的标签删除陷阱

在容器运行期间动态删除标签可能引发不可预期的行为,尤其是在服务发现和监控系统依赖标签进行资源匹配时。
标签变更的影响范围
当容器处于运行状态时,其元数据(如标签)被修改,部分编排系统并不会实时同步到下游组件。例如,在 Kubernetes 中,Pod 的标签更新不会自动触发 Service 或 Deployment 的重新选择。
kubectl label pod my-pod version=v1 --overwrite
kubectl label pod my-pod tier-
该命令移除了 Pod 的 `tier` 标签。若 Service 正依赖此标签选择后端,Pod 将立即从 Endpoint 列表中剔除,导致流量中断。
最佳实践建议
  • 避免在生产环境中直接修改运行中容器的标签
  • 使用 Deployment 等控制器通过声明式配置更新标签
  • 变更前评估对服务拓扑、监控、日志采集的影响

3.3 实践演示:强制清理前的正确检查流程

在执行强制清理操作前,必须确保系统状态和数据完整性处于可控范围。跳过检查流程可能导致服务中断或数据丢失。
检查流程核心步骤
  1. 确认当前无正在进行的数据同步任务
  2. 验证备份系统最近一次完整备份的时间戳
  3. 检查关键服务进程是否处于活跃状态
健康状态检测脚本示例
#!/bin/bash
# 检查数据库同步状态
if ! pg_isready -h localhost -p 5432; then
  echo "ERROR: Database not reachable"
  exit 1
fi

# 验证最近备份是否存在(24小时内)
backup_age=$(find /backups -name "daily_*.sql" -mtime -1 | wc -l)
if [ $backup_age -eq 0 ]; then
  echo "ERROR: No recent backup found"
  exit 1
fi
上述脚本首先使用 pg_isready 检测 PostgreSQL 数据库连接状态,确保元数据服务可用;随后通过 find -mtime -1 判断过去24小时内是否存在有效备份,防止误删未备份数据。

第四章:高效管理镜像标签的最佳实践

4.1 使用docker rmi精准删除指定标签

在Docker镜像管理中,`docker rmi` 命令用于删除本地存储的镜像。通过指定镜像的仓库名和标签,可实现精准清除不再需要的镜像版本,释放磁盘空间。
基本语法与参数说明
docker rmi [OPTIONS] IMAGE[:TAG]
其中,`IMAGE` 为镜像名称,`TAG` 默认为 `latest`。若未指定标签,则删除该镜像的所有标签版本。
删除指定标签的实例
  • docker rmi myapp:v1.0:仅删除 myapp 的 v1.0 标签
  • docker rmi ubuntu:20.04:移除特定版本的 Ubuntu 镜像
当多个标签指向同一镜像ID时,仅删除标签引用,镜像层数据在无其他引用时由垃圾回收机制清理。使用 --force 选项可强制删除正在使用的镜像。

4.2 批量清理无用标签与悬空镜像

在长期运行的Docker环境中,频繁构建和部署会产生大量无用标签与悬空镜像(dangling images),占用磁盘空间并影响管理效率。
识别悬空镜像
悬空镜像是指不再被任何标签引用且无容器依赖的镜像层。可通过以下命令查看:
docker images --filter "dangling=true"
该命令仅列出未被引用的中间层镜像,通常以<none>显示为仓库名或标签。
批量清理策略
使用如下命令一键删除所有悬空镜像:
docker image prune
添加 -a 参数可进一步删除所有未使用的镜像(不仅限于悬空):
docker image prune -a
此操作释放存储资源,建议结合CI/CD流水线定期执行。
命令作用范围
prune仅悬空镜像
prune -a全部未使用镜像

4.3 配合docker system prune优化存储空间

Docker 在长期运行过程中会积累大量无用资源,如停止的容器、未被使用的网络和镜像等。定期执行清理操作是维持系统高效运行的关键。
基本清理命令
docker system prune -f
该命令可自动移除所有未使用的资源,包括已停止的容器、孤立的网络以及悬空镜像。-f 参数表示强制执行,无需交互确认,适合自动化脚本中使用。
深度清理策略
若需释放更多空间,可启用更彻底的清理模式:
docker system prune --volumes --all
--volumes 会删除未使用的数据卷,--all 则清除所有未被任何容器引用的镜像。此操作影响较大,建议在维护窗口执行。
  • 日常维护推荐每日定时任务清理临时资源
  • 生产环境应结合监控指标评估清理频率
  • 关键数据务必提前备份,避免误删

4.4 自动化脚本实现标签生命周期管理

在现代DevOps实践中,标签(Tag)不仅是资源分类的核心手段,更承载着成本追踪、合规审计等关键职责。为避免标签冗余或遗漏,需通过自动化脚本统一管理其创建、更新与清理。
标签策略定义
遵循预设规则生成标签,例如环境(env=prod)、业务线(team=backend)等。所有变更必须通过脚本执行,确保一致性。
Python脚本示例

import boto3

def create_tag(resource_id, key, value):
    ec2 = boto3.client('ec2')
    ec2.create_tags(
        Resources=[resource_id],
        Tags=[{'Key': key, 'Value': value}]
    )
该函数调用AWS SDK为指定资源添加标签,参数resource_id标识目标资源,key和value构成标签键值对,适用于EC2、S3等支持标签的云资源。

第五章:从问题到掌控——构建稳健的镜像运维体系

在容器化部署日益普及的今天,镜像不再只是应用的载体,更是系统稳定性的关键环节。一次未经验证的基础镜像更新,可能导致整个服务链路异常。某金融企业曾因误用包含高危漏洞的第三方镜像,导致API网关频繁崩溃。为此,他们建立了基于CI/CD的镜像准入机制。
镜像构建标准化
统一使用多阶段构建减少体积,避免敏感信息残留:
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o main ./cmd/api

FROM alpine:latest
RUN apk --no-cache add ca-certificates
COPY --from=builder /app/main /main
EXPOSE 8080
CMD ["/main"]
安全扫描与版本控制
集成Trivy进行静态扫描,阻断CVE评分高于7.0的镜像推送。所有生产镜像必须打标签并记录至CMDB,格式为:v1.4.0-20240520-prod。
  • 每日自动拉取基础镜像更新并触发重建
  • 镜像推送到私有Registry前需通过签名验证
  • 保留最近10个可回滚版本,过期自动归档
运行时监控与快速响应
通过Prometheus采集容器启动耗时、内存漂移等指标,结合ELK分析镜像相关日志。当某节点批量出现ImagePullBackOff时,自动触发降级策略,切换至备用镜像仓库。
指标阈值响应动作
镜像下载耗时>30s切换CDN源
层差异数>5触发安全复查
源码提交 → 构建镜像 → 安全扫描 → 推送私有库 → 准入校验 → 部署集群 → 运行监控
Docker资源清理指南:镜像、容器与卷的安全删除实践 Docker镜像、容器和卷是轻量级虚拟化的核心资源,其分层存储、可写层机制与独立生命周期共同构成状态化运行时环境。理解镜像的只读层复用原理、容器的可写层持久性以及卷的数据解耦特性,是避免误删与磁盘爆满的关键。技术价值在于提升CI/CD稳定性、降低运维故障率并保障数据安全;典型应用场景包括开发机空间治理、Gerrit/Jenkins等容器化平台的长期运维,以及生产环境中基于`docker system df`的空间审计与自动化清理。本文聚焦悬空镜像识别、已退出容器判定及未使用卷清理三大高频任务,提供可落地的风 阅读详情

相关推荐

Docker资源清理方法论:镜像、容器与卷的安全分级清理

Docker存储模型由镜像、容器和卷三层构成,其分层只读与数据持久化设计决定了资源不能简单‘一键删除’。理解各层生命周期(如镜像被多容器共享、容器可写层独立于卷、卷跨容器/服务/进程持久存在)是安全清理的前提。技术价值在于避免误删导致服务中断或数据丢失,尤其在CI/CD高频构建、本地调试频繁启停、docker-compose或Swarm编排等场景下,精准识别悬空镜像、已停止容器、匿名卷及受保护卷尤为关键。本文聚焦基于状态识别与依赖验证的分级清理实践,覆盖日常维护、深度清理、故障排查到终极重装四类策略,强调l

weixin_34194359的博客 441

Docker镜像标签管理实战:从版本控制到环境切换

本文深入探讨Docker镜像标签管理的核心价值与实战技巧,从版本控制到多环境切换。通过真实案例展示标签命名规范、环境切换方案及版本回滚策略,帮助开发者高效管理容器化应用。特别强调标签作为镜像生命线的重要性,并分享自动化管理的高级技巧。

weixin_29243063的博客 103

Docker从入门到实战:镜像、容器、Compose编排与排错

容器化技术正在重塑应用交付与运维方式,Docker作为核心引擎,通过镜像打包应用及依赖,借助容器实现隔离运行,让环境一致性与资源利用率显著提升。无论是本地开发搭建MySQL、Redis等中间件,还是微服务集群的编排部署,Docker Compose都能让多容器管理变得简单高效。对于开发者与运维人员而言,掌握Docker基础命令、镜像构建、数据卷挂载及常见排错技巧,已成为日常工作的高频需求。内容从实际使用角度系统梳理了Docker的核心概念、安装配置、高频命令、Dockerfile编写与Compose编排,并

weixin_34327761的博客 338

Docker 镜像重命名【打上新的标签】

查看镜像ID或旧名称。docker tag <旧名称或ID> <新名称:标签>创建新标签。(可选)docker rmi <旧名称:标签>删除旧标签以保持整洁。使用验证结果。这是一个安全、高效且标准的 Docker 镜像管理操作。

ban102055的博客 2783

Docker Engine实操入门:从docker: command not found到可调试容器

容器技术本质是操作系统级虚拟化,依托Linux namespaces与cgroups实现进程隔离;Docker Engine作为最主流的容器运行时,封装了runc等底层能力,提供统一CLI接口与镜像管理机制;其技术价值在于降低容器化门槛、保障环境一致性,并支撑CI/CD与微服务架构落地;典型应用场景包括本地开发调试、PHP/Java应用容器化、Docker Compose多服务编排及向Kubernetes平滑演进;本文聚焦Docker Engine安装配置、daemon.json深度调优、镜像加速、权限与网

weixin_34008933的博客 387

面渣逆袭之Java基础篇2

Tips:所有的关键字都是小写的,在 IDE 中会以特殊颜色显示。default 这个关键字很特殊,既属于程序控制,也属于类,方法和变量修饰符,还属于访问控制。①在程序控制中,当在 switch 中匹配不到任何情况时,可以使用 default 来编写默认匹配的情况。②在类,方法和变量修饰符中,从 JDK8 开始引入了默认方法,可以使用 default 关键字来定义一个方法的默认实现。③在访问控制中,如果一个方法前没有任何修饰符,则默认会有一个修饰符 default,但是这个修饰符加上了就会报错。

m0_73804764的博客 1108

Docker镜像标签删不掉?99%的人都忽略的5个关键细节(深度揭秘)

轻松掌握Docker镜像仓库删除标签方法,解决标签删不掉的常见难题。涵盖私有仓库与公有仓库操作场景,详解API调用与命令行两种核心方法,避免存储浪费。关键细节深度揭秘,值得收藏。

InitFlow的博客 479

Telegram 担保交易系统搭建指南:安全可靠的交易流程实现

本文介绍了基于Telegram Bot API搭建担保交易系统的完整方案。该系统通过第三方资金托管机制解决买卖双方信任问题,支持"付款后发货"和"收货后放款"的交易流程。文章详细阐述了系统架构设计,包括Telegram Bot交互层、后端业务逻辑层、数据库层和支付接口层。核心实现步骤涵盖:1)订单创建模块处理交易信息;2)支付处理模块集成Stripe Escrow实现资金托管;3)确认收货模块完成资金划转。系统采用PostgreSQL存储交易数据,并通过FastAPI

jingpide9527的博客 1948

你不知道的Docker仓库优化秘术:标签清理背后的成本控制真相

掌握Docker镜像仓库标签清理技巧,有效降低存储成本与管理复杂度。适用于CI/CD频繁构建场景,通过自动化策略清理冗余标签,释放空间并提升拉取效率。方法简单、效果显著,值得收藏。

FastDebug的博客 875

Qlib+backtrader:2014.1.1-2023.9.20最新回测结果,可以实盘吗?

今年以来,在研究了qlib和backtrader的基础上,把二者结合起来进行了一个策略研究。简单说就是用qlib在200只股票的股票池中进行滚动训练与预测(walk forward),总体数据范围是2005到2023年,以20日间隔滚动训练和预测,最终得到2014.1.1-2023.9.20共10年测试期的收益率预测结果。将预测结果代入backtrader进行回测,得到如下回测结果。

qtbgo的博客 1783

数据工程师——ETL

文章摘要 ETL(数据抽取、转换、加载)是数据处理的核心流程,负责将分散数据源整合为高质量数据。ETL与ELT的主要区别在于转换步骤顺序,分别适用于不同规模数据场景。数据仓库通过ETL从多个数据源集成数据,支持分析决策。维度建模中的事实表记录业务指标,维度表提供上下文信息。缓慢变化维度(SCD)处理随时间变化的维度数据,常见类型包括直接覆盖型、新增版本型等。数据清洗解决数据缺失、重复、错误等问题,确保数据质量。数据血缘记录数据流转路径,便于问题排查和影响分析。常用ETL工具如Kettle通过转换和作业实现数

weixin_45729710的博客 1559

latest标签背后的真相:看似便捷,实则埋下运维灾难

掌握Docker镜像标签管理技巧,规避latest标签带来的部署风险。本文解析latest标签在生产环境中的隐患,提供基于语义化版本的标签策略,确保应用稳定性与可追溯性,提升运维效率,值得收藏。

FastCompile的博客 1180

手把手教你用开源EtherCAT协议栈SOEM开发从站设备(附避坑指南)

本文详细介绍了如何使用开源EtherCAT从站协议栈SOES进行嵌入式设备开发。内容涵盖从环境搭建、硬件准备到核心的对象字典与PDO映射配置,并重点分享了主循环集成、状态机处理以及实战调试中的常见问题与避坑指南,旨在帮助开发者高效实现设备接入工业现场总线网络。

linux的博客 627

Docker镜像清理实战:从存储原理到自动化工作流

Docker镜像并非简单文件,而是由多层只读快照构成的引用计数式存储结构;其空间占用受悬空层、未被引用镜像及构建缓存共同影响,导致`no space left on device`等故障频发。理解`docker system df`的RECLAIMABLE指标与镜像层共享机制,是实现精准清理的前提;结合`docker image prune`、`builder prune`和分层过滤策略,可在开发、CI/CD与生产场景中安全释放GB级空间。本文聚焦Docker 24.x原生命令体系,覆盖悬空镜像识别、容器依

493

uniapp 基于单选框多选框实现上拉触底多选/单选、回显

showPickerCheckbox弹层显示 label和value 类似下拉框的label和value一个意思 键和值。结果:可以传接口(接口只能post请求) 可以搜索 下面是结果图片展示 单选多选都可以。fieldValue回显传的值 传的是字符串 数组的话[1,2]转为1,2格式传入。mode是控制的单选还是多选 true为多选默认值 其余参数 单选多选一样。fieldName字段名 确定后会返回该字段名 根据字段名找对应的传入值。问题:在uniapp上 实现分页多选的操作。下面是组件的完整代码。

2301_76607997的博客 2936

Cesium圆形波纹/雷达扩散效果扩展类CircleWaveMaterialProperty

本文是基于原创内容进行部分修改,原文出处:https://blog.youkuaiyun.com/chudage11/article/details/101632482 SuperMapCesium支持该类似扩展类,以下是原生Cesium调用扩展类CircleWaveMaterialProperty说明 1.扩展类CircleWaveMaterialProperty.js import*asCesiumfrom'cesium' varCircleWaveMaterial={ Circl...

一碗老面的博客 2998

为什么顶级团队都在用Docker部署边缘Agent?真相来了

解决边缘计算部署难题,揭秘高效运维新方式。通过边缘 Agent 的 Docker 轻量级部署,实现跨平台快速交付、资源占用低、启动速度快,广泛应用于物联网、工业自动化等场景。提升部署效率与系统稳定性,值得收藏。

CompiGap的博客 1078

【Clickhouse】Clickhouse写入报错keeper server rejected the connection during the handshake

我的clickhouse集群时不时的报这个错误All connection tries failed while connecting to ZooKeeper. nodes: xxx 到时写入数据失败 用的ck自带的keeper。你需要仔细检查ZooKeeper集群的配置和状态,确保所有节点都正常运行,并且能够正确地选举领导者。检查ZooKeeper的ACL以及ClickHouse连接所使用的凭据,确保它们被正确配置和授权。版本不兼容:有时,不同版本的软件之间可能存在不兼容性,导致连接问题。

九师兄 371

Docker镜像备份与迁移实战(save vs export 真相曝光)

掌握Docker镜像备份与迁移核心技巧,深入解析Docker镜像save与export的差异与应用场景。save保留完整镜像信息,适合版本管理;export导出容器文件系统,轻量灵活。搞懂本质区别,提升运维效率,值得收藏。

GatherTide的博客 788

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Docker资源清理深度指南:镜像、容器与卷的精准释放

Docker存储管理并非简单的文件删除,而是基于引用计数与分层架构的系统性工程。其底层依赖overlay2驱动、镜像层共享机制及卷元数据注册表,导致`docker system prune`等命令常有残留——尤其匿名卷和悬空镜像易被忽略。理解`RECLAIMABLE`空间含义、`dangling=true`过滤逻辑及`--volumes`参数兼容性,是实现高效磁盘回收的关键。本文覆盖Ubuntu 22.04+Docker 24.0.7实测方案,适用于CI/CD服务器维护、Gerrit等持久化服务运维及PHP

weixin_33739627的博客 383

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

揭秘Docker私有仓库拉取失败真相:90%开发者忽略的3个关键配置

解决Docker私有仓库拉取失败难题,揭秘90%开发者忽略的3个关键配置。涵盖HTTPS配置、认证机制与镜像权限设置,适用于企业级镜像管理场景。提升部署效率,避免常见错误,值得收藏。

QuickCode的博客 678

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

为什么90%的Docker生产事故都源于权限滥用?真相令人震惊

掌握Docker安全加固:镜像扫描与权限控制,有效预防生产环境风险。适用于容器化部署场景,通过自动化镜像漏洞扫描与最小权限原则,显著降低攻击面。90%事故源于权限滥用,科学配置是关键,值得收藏。

SimProceed的博客 752

为什么顶级团队都在用Docker部署Neo4j?揭秘背后的技术优势与性能真相

掌握Docker与Neo4j的图数据库集成,轻松解决部署复杂与环境不一致难题。适用于微服务、知识图谱和实时推荐等场景,实现快速搭建、高效隔离与灵活扩展。一键启动、版本可控、运维简便,提升开发效率与系统稳定性,值得收藏。

CodePulse的博客 990

Docker镜像容器卷清理:资源生命周期管理实战指南

Docker清理本质是面向容器化环境的资源生命周期管理,其核心在于理解镜像(只读模板)、容器(运行实例)与卷(独立持久化存储)三者的依赖关系与状态语义。基于分层存储原理,盲目执行docker system prune或volume rm极易破坏构建缓存、中断服务连接或误删关键数据。技术价值体现在保障CI/CD稳定性、避免磁盘空间误释放、维持网络与存储拓扑一致性。典型应用场景包括生产集群日常维护、K8s节点Docker引擎治理、以及多环境交付流水线资源回收。本文聚焦可验证、可回滚的清理决策逻辑,深度融合doc

weixin_30879169的博客 345

Docker镜像容器卷清理实战:分层策略与跨平台避坑指南

Docker资源管理是容器化运维的基础能力,其核心在于理解镜像、容器、卷三者间的依赖关系与生命周期。镜像作为只读模板,其悬空层和构建缓存会持续占用磁盘;容器作为运行实例,停止后仍持有匿名卷和网络资源;卷则分为命名卷(持久化关键数据)与匿名卷(临时挂载),误删将导致数据库丢失。技术价值体现在空间回收、系统稳定性提升及CI/CD流水线效率优化。典型应用场景包括开发环境磁盘告警处理、Linux服务器零停机维护、Docker Desktop在Windows/macOS上的虚拟磁盘瘦身。本文聚焦docker prun

weixin_30764771的博客 380

Docker开发环境实战:跨平台安装、镜像构建与多容器编排

Docker 是一种基于 Linux 内核特性(namespace/cgroup)实现的轻量级进程隔离技术,其核心价值在于提供可复现、可传递、可丢弃的运行环境。它通过分层镜像机制实现高效存储与网络隔离模型保障服务间安全通信,显著降低 Python、Flask、PostgreSQL 等多组件应用在 Windows/macOS/Linux 平台上的环境配置成本。在微服务架构和本地开发调试场景中,Docker 与 Docker Compose 结合,支撑从单容器部署到多服务协同的完整工程化流程,成为现代软件交付链

weixin_34378969的博客 356
上一篇: Docker build缓存突然失效?这4个隐藏原因你查过吗?
下一篇: 解决GPU容器内存溢出难题:共享内存大小调整实战指南
LearnFlow
博客等级 码龄1年 150粉丝 2113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值