3 个不稳定版本
0.2.1 | 2020年3月14日 |
---|---|
0.2.0 | 2020年2月19日 |
0.1.0 | 2020年2月17日 |
#1022 in 文件系统
每月下载 24 次
9KB
121 代码行
状态
docker-extract
docker-extract
是一个Rust库,可以从Docker镜像中提取文件系统。
以下是一个示例,将 alpine:latest
提取到目录 ./docker-fs
use docker_extract;
use std::path::Path;
fn main() {
let image = "alpine";
let tag = "latest";
let to_dir = Path::new("./docker-fs");
docker_extract::extract_image(image, tag, &to_dir);
}
安全
此库依赖于 tar crate,它非常注重安全问题。为了防止目录遍历问题,它不会在指定的输出目录之外解包任何内容,即,名称中包含 ..
的路径将不会被解包。
此外,docker-extract
不会提取指向绝对路径的符号链接,因为它们无论如何都会指向错误的位置。
详细提取过程
以下过程描述了 docker-extract
做了什么
- 运行
docker save {image}:{tag} -o {tmp_dir}/image.tar
- 从
${tmp_dir}
中的${tmp_dir}
提取所有层到所需的结果目录 - 删除
${tmp_dir}
因此,docker-extract
需要访问 docker
,并且 {image}:{tag}
已经被拉取。
crev
此crate有其作者的 crev审核。
建议始终使用 cargo-crev 来验证每个依赖项的可靠性,包括此依赖项。
依赖项
~4–13MB
~176K SLoC