package client import ( "context" "io" "net/url" ) // ImageSave retrieves one or more images from the docker host as an // [io.ReadCloser]. // // Platforms is an optional parameter that specifies the platforms to save // from the image. Passing a platform only has an effect if the input image // is a multi-platform image. func (cli *Client) ImageSave(ctx context.Context, imageIDs []string, saveOpts ...ImageSaveOption) (io.ReadCloser, error) { var opts imageSaveOpts for _, opt := range saveOpts { if err := opt.Apply(&opts); err != nil { return nil, err } } query := url.Values{ "names": imageIDs, } if len(opts.apiOptions.Platforms) > 0 { if err := cli.NewVersionError(ctx, "1.48", "platform"); err != nil { return nil, err } p, err := encodePlatforms(opts.apiOptions.Platforms...) if err != nil { return nil, err } query["platform"] = p } resp, err := cli.get(ctx, "/images/get", query, nil) if err != nil { return nil, err } return resp.Body, nil }