本文目录导读:

Docker 镜像
通过容器导出
# 创建临时容器(不运行) docker create --name temp_container your_image:tag # 复制文件到本地 docker cp temp_container:/path/to/file ./local_file # 清理临时容器 docker rm temp_container
直接导出镜像并解压
# 保存镜像为tar包 docker save -o image.tar your_image:tag # 解压tar包 tar -xvf image.tar # 进入各层目录(每层包含一个json文件和layer.tar) cd [layer_id] tar -xvf layer.tar # 提取该层文件内容
使用 skopeo(跨仓库工具)
# 下载镜像到本地目录(无需Docker守护进程) skopeo copy docker://your_image:tag dir:/path/to/output # 查看输出目录中每一层的manifest.json,并解压blobs/sha256下的文件
ISO 文件
Linux 系统
# 挂载ISO到/mnt目录 sudo mount -o loop your_image.iso /mnt # 复制所需文件 cp /mnt/somefile ./ # 卸载 sudo umount /mnt
macOS 系统
# 挂载ISO hdiutil mount your_image.iso # 文件会出现在 /Volumes/ 下 cp /Volumes/ISO_NAME/somefile ./ # 卸载 hdiutil unmount /Volumes/ISO_NAME
磁盘镜像(RAW、QCOW2、VMDK 等)
使用 qemu-nbd(Linux)
# 加载网络块设备模块 sudo modprobe nbd max_part=8 # 连接镜像到nbd设备 sudo qemu-nbd --connect=/dev/nbd0 your_image.qcow2 # 查看分区 sudo fdisk -l /dev/nbd0 # 挂载分区(如/dev/nbd0p1) sudo mount /dev/nbd0p1 /mnt # 提取文件后卸载 sudo umount /mnt sudo qemu-nbd --disconnect /dev/nbd0
使用 guestfish(跨格式工具)
guestfish -a your_image.qcow2 -i > ls / > download /path/to/file ./local_file > exit
嵌入式文件系统镜像(如 squashfs、UBI)
Squashfs
# 解压(需安装squashfs-tools) unsquashfs -d output_dir your_image.squashfs
UBI 镜像
# 使用 ubireader(Python工具) ubireader_extract_images your_image.ubi
APK/AAB 安装包(Android)
# 解压apk(本质是zip) unzip your_app.apk -d output_dir # 查看classes.dex等文件
注意事项
- 权限问题:某些操作可能需要
sudo或管理员权限。 - 镜像层次:Docker镜像可能包含分层,需要合并所有层才能得到完整文件系统。
- 加密/压缩:部分镜像可能加密或使用特殊压缩格式(如ZFS),需专用工具。
选择方法时,先明确镜像类型和运行环境,如果是Docker镜像,推荐方法一(通过容器提取)最简单直观。
标签: 文件内容
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。