class DockerClient {

  public DockerImageDetails inspect(ImageReference imageReference)
      throws IOException, InterruptedException {
    Process inspectProcess =
        docker("inspect", "-f", "{{json .}}", "--type", "image", imageReference.toString());
    if (inspectProcess.waitFor() != 0) {
      throw new IOException(
          "'docker inspect' command failed with error: " + getStderrOutput(inspectProcess));
    }
    return JsonTemplateMapper.readJson(inspectProcess.getInputStream(), DockerImageDetails.class);
  }

  public  DockerClient(Path dockerExecutable, Map<String, String> dockerEnvironment);
  @VisibleForTesting  DockerClient(Function<List<String>, ProcessBuilder> processBuilderFactory);

}