diff --git a/dockerclient.go b/dockerclient.go index b3054bb..a0a1ac2 100644 --- a/dockerclient.go +++ b/dockerclient.go @@ -738,3 +738,18 @@ func (client *DockerClient) BuildImage(image *BuildImage) (io.ReadCloser, error) uri := fmt.Sprintf("/%s/build?%s", APIVersion, v.Encode()) return client.doStreamRequest("POST", uri, image.Context, headers) } + +func (client *DockerClient) History(id string) ([]ImageLayer, error) { + uri := fmt.Sprintf("/%s/images/%s/history", APIVersion, id) + data, err := client.doRequest("GET", uri, nil, nil) + if err != nil { + return []ImageLayer{}, err + } + + layers := []ImageLayer{} + err = json.Unmarshal(data, &layers) + if err != nil { + return []ImageLayer{}, err + } + return layers, nil +} diff --git a/mockclient/mock.go b/mockclient/mock.go index 28ecead..24eb7c4 100644 --- a/mockclient/mock.go +++ b/mockclient/mock.go @@ -170,3 +170,8 @@ func (client *MockClient) BuildImage(image *dockerclient.BuildImage) (io.ReadClo args := client.Mock.Called(image) return args.Get(0).(io.ReadCloser), args.Error(1) } + +func (client *MockClient) History(id string) ([]dockerclient.ImageLayer, error) { + args := client.Mock.Called(id) + return args.Get(0).([]dockerclient.ImageLayer), args.Error(1) +} diff --git a/types.go b/types.go index 15e1e8b..5a91d81 100644 --- a/types.go +++ b/types.go @@ -442,3 +442,12 @@ type BuildImage struct { CpuSetMems string CgroupParent string } + +type ImageLayer struct { + Id string + Created int64 + CreatedBy string + Comment string + Size int64 + Tags []string +}