You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure集群中获取Pod镜像并完成类似docker diff的对比操作

Azure环境替代docker diff及获取容器镜像方案

背景说明

当前Azure Kubernetes服务(AKS)默认使用containerd作为容器运行时,未预装Docker,因此无法直接使用Docker相关命令。以下是等效实现方案:


方案1:直接查询容器与原始镜像的差异(等效docker diff)

需要登录Pod所在的Azure节点执行操作:

  • 首先获取Pod调度的节点名称:
    kubectl get pod <目标Pod名> -n <命名空间> -o jsonpath='{.spec.nodeName}'
  • 登录对应节点后,获取目标容器ID:
    crictl ps | grep <Pod名称/原始镜像名>
  • 执行差异查询命令,直接输出容器可写层和原始镜像的差异:
    crictl diff <容器ID>

方案2:导出原始镜像和运行中容器完整文件系统做对比

如果需要全量对比两个文件系统,可通过以下步骤导出两份文件:

  1. 导出原始镜像
  • 查询Pod使用的原始镜像地址:
    kubectl get pod <目标Pod名> -n <命名空间> -o jsonpath='{.spec.containers[*].image}'
  • 节点上拉取并导出原始镜像包:
    crictl pull <原始镜像地址> && crictl save <原始镜像地址> -o original-image.tar
  1. 导出运行中容器的完整文件系统
    crictl export <容器ID> -o running-container.tar
  2. 本地解压两个tar包后即可进行任意维度的内容对比

轻量替代方案(无需登录节点)

如果仅需要获取容器内的变更文件,无需全量对比:

  • 通过kubectl exec进入容器,筛选出创建/修改时间晚于容器启动时间的文件,即为变更内容
  • 拷贝指定变更文件到本地:
    kubectl cp <命名空间>/<目标Pod名>:<容器内文件路径> <本地存储路径>

注意:crictl是containerd运行时官方配套的CLI工具,Azure节点默认预装,无需额外部署。

内容的提问来源于stack exchange,提问作者Celestial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:15:03