diff --git a/dockerclient.go b/dockerclient.go index 47213e4..5384d0b 100644 --- a/dockerclient.go +++ b/dockerclient.go @@ -382,6 +382,20 @@ func (client *DockerClient) PullImage(name string, auth *AuthConfig) error { return nil } +func (client *DockerClient) InspectImage(id string) (*ImageInfo, error) { + uri := fmt.Sprintf("/%s/images/%s/json", APIVersion, id) + data, err := client.doRequest("GET", uri, nil, nil) + if err != nil { + return nil, err + } + info := &ImageInfo{} + err = json.Unmarshal(data, info) + if err != nil { + return nil, err + } + return info, nil +} + func (client *DockerClient) LoadImage(reader io.Reader) error { data, err := ioutil.ReadAll(reader) if err != nil { diff --git a/interface.go b/interface.go index 0a7eb1e..3097f43 100644 --- a/interface.go +++ b/interface.go @@ -12,6 +12,7 @@ type Client interface { Info() (*Info, error) ListContainers(all, size bool, filters string) ([]Container, error) InspectContainer(id string) (*ContainerInfo, error) + InspectImage(id string) (*ImageInfo, error) CreateContainer(config *ContainerConfig, name string) (string, error) ContainerLogs(id string, options *LogOptions) (io.ReadCloser, error) ContainerChanges(id string) ([]*ContainerChanges, error) diff --git a/mockclient/mock.go b/mockclient/mock.go index 3b2f269..5086236 100644 --- a/mockclient/mock.go +++ b/mockclient/mock.go @@ -30,6 +30,11 @@ func (client *MockClient) InspectContainer(id string) (*dockerclient.ContainerIn return args.Get(0).(*dockerclient.ContainerInfo), args.Error(1) } +func (client *MockClient) InspectImage(id string) (*dockerclient.ImageInfo, error) { + args := client.Mock.Called(id) + return args.Get(0).(*dockerclient.ImageInfo), args.Error(1) +} + func (client *MockClient) CreateContainer(config *dockerclient.ContainerConfig, name string) (string, error) { args := client.Mock.Called(config, name) return args.String(0), args.Error(1) diff --git a/types.go b/types.go index bedcf03..c3041bd 100644 --- a/types.go +++ b/types.go @@ -20,6 +20,7 @@ type ContainerConfig struct { AttachStderr bool PortSpecs []string ExposedPorts map[string]struct{} + MacAddress string Tty bool OpenStdin bool StdinOnce bool @@ -142,6 +143,22 @@ func (s *State) StateString() string { return "exited" } +type ImageInfo struct { + Architecture string + Author string + Comment string + Config *ContainerConfig + Container string + ContainerConfig *ContainerConfig + Created time.Time + DockerVersion string + Id string + Os string + Parent string + Size int64 + VirtualSize int64 +} + type ContainerInfo struct { Id string Created string