diff --git a/src/main/java/com/github/dockerjava/jaxrs/SaveImageCmdExec.java b/src/main/java/com/github/dockerjava/jaxrs/SaveImageCmdExec.java index f3f9a0d35..c386ea3a0 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/SaveImageCmdExec.java +++ b/src/main/java/com/github/dockerjava/jaxrs/SaveImageCmdExec.java @@ -12,6 +12,7 @@ import com.github.dockerjava.api.command.SaveImageCmd; import com.github.dockerjava.core.DockerClientConfig; import com.github.dockerjava.jaxrs.util.WrappedResponseInputStream; +import com.google.common.base.Strings; public class SaveImageCmdExec extends AbstrSyncDockerCmdExec implements SaveImageCmd.Exec { private static final Logger LOGGER = LoggerFactory.getLogger(SaveImageCmdExec.class); @@ -22,8 +23,13 @@ public SaveImageCmdExec(WebTarget baseResource, DockerClientConfig dockerClientC @Override protected InputStream execute(SaveImageCmd command) { - WebTarget webResource = getBaseResource().path("/images/" + command.getName() + "/get").queryParam("tag", - command.getTag()); + // If tag is present, only tar the specific image + // else tar all the images with the same name + String name = command.getName(); + if (!Strings.isNullOrEmpty(command.getTag())) { + name += ":" + command.getTag(); + } + WebTarget webResource = getBaseResource().path("/images/" + name + "/get"); LOGGER.trace("GET: {}", webResource); Response response = webResource.request().accept(MediaType.APPLICATION_JSON).get(); diff --git a/src/test/java/com/github/dockerjava/core/command/SaveImageCmdImplTest.java b/src/test/java/com/github/dockerjava/core/command/SaveImageCmdImplTest.java index ffc81d4e0..6848af2cd 100644 --- a/src/test/java/com/github/dockerjava/core/command/SaveImageCmdImplTest.java +++ b/src/test/java/com/github/dockerjava/core/command/SaveImageCmdImplTest.java @@ -49,6 +49,8 @@ public void saveImage() throws Exception { InputStream image = IOUtils.toBufferedInputStream(dockerClient.saveImageCmd("busybox").exec()); assertThat(image.available(), greaterThan(0)); + InputStream image2 = IOUtils.toBufferedInputStream(dockerClient.saveImageCmd("busybox").withTag("latest").exec()); + assertThat(image2.available(), greaterThan(0)); }