Docker 是否可以使用gradle保存gzip Win7绕线器?

Docker 是否可以使用gradle保存gzip Win7绕线器?,docker,gradle,gzip,Docker,Gradle,Gzip,我有一套- 带有docker.exe文件的本地PC无docker安装 运行docker守护程序+repo的远程服务器 我正在使用gradle任务将图像保存到本地PC: project.exec{ ExecSpec exe-> { exe.commandLine “{docker exe path}” exe.args “save”, “-o”, “{tag}”, “{output path}” } 它可以工作并在PC上保存.tar。 现在我试图保存用gz/bz/xz压缩的图像,但无论我如

我有一套- 带有docker.exe文件的本地PC无docker安装 运行docker守护程序+repo的远程服务器

我正在使用gradle任务将图像保存到本地PC:

project.exec{ ExecSpec exe->
{
exe.commandLine “{docker exe path}”
exe.args “save”, “-o”, “{tag}”, “{output path}”
}
它可以工作并在PC上保存.tar。 现在我试图保存用gz/bz/xz压缩的图像,但无论我如何排列参数,这都不起作用。 现在,如果我尝试通过cmd执行此操作,它会起作用: “{docker exe path}保存{tag}| gzip>{output path}” 使用gradle可以做到这一点吗?谁能帮帮我吗

使用Win 7、docker.exe版本18.09.2、gradle版本5.4.1
非常感谢

您不能像重定向操作符那样使用shell构造,因为Gradle不会将命令委托给shell

如果愿意,可以使用,因为它支持通过压缩保存图像。下面是一个如何在Groovy DSL中使用它的示例:

plugins {
    id "com.bmuschko.docker-remote-api" version "5.0.0"
}

import com.bmuschko.gradle.docker.tasks.image.*

task saveDockerImage(type: DockerSaveImage) {
    destFile = layout.buildDirectory.file("my-docker-image.tgz")
    repository = "my/image"
    tag = "latest"
    useCompression = true
}

这种方法的优点是使用相对简单,可以在Windows和Unix平台上工作,如果您在远程存储库上工作,甚至不需要在本地安装docker

但是如果你不想使用第三方插件,你必须将图像保存为tar文件,因为docker save就是这么做的,然后运行另一个exec命令来gzip它,或者使用你喜欢使用的任何其他压缩工具

您还可以创建一个bat或bash脚本来完成所有这些,然后从Gradle执行。但这也不像使用插件IMHO那么优雅