| package client |
| |
| import ( |
| "context" |
| "encoding/json" |
| "net/url" |
| |
| "github.com/moby/moby/api/types/container" |
| ) |
| |
| // ContainerInspectOptions holds options for inspecting a container using |
| // the [Client.ConfigInspect] method. |
| type ContainerInspectOptions struct { |
| // Size controls whether the container's filesystem size should be calculated. |
| // When set, the [container.InspectResponse.SizeRw] and [container.InspectResponse.SizeRootFs] |
| // fields in [ContainerInspectResult.Container] are populated with the result. |
| // |
| // Calculating the size can be a costly operation, and should not be used |
| // unless needed. |
| Size bool |
| } |
| |
| // ContainerInspectResult holds the result from the [Client.ConfigInspect] method. |
| type ContainerInspectResult struct { |
| Container container.InspectResponse |
| Raw json.RawMessage |
| } |
| |
| // ContainerInspect returns the container information. |
| func (cli *Client) ContainerInspect(ctx context.Context, containerID string, options ContainerInspectOptions) (ContainerInspectResult, error) { |
| containerID, err := trimID("container", containerID) |
| if err != nil { |
| return ContainerInspectResult{}, err |
| } |
| |
| query := url.Values{} |
| if options.Size { |
| query.Set("size", "1") |
| } |
| resp, err := cli.get(ctx, "/containers/"+containerID+"/json", query, nil) |
| if err != nil { |
| return ContainerInspectResult{}, err |
| } |
| var out ContainerInspectResult |
| out.Raw, err = decodeWithRaw(resp, &out.Container) |
| return out, err |
| } |