12345678910111213141516171819202122232425262728293031323334353637383940 |
- package client // import "github.com/docker/docker/client"
- import (
- "context"
- "io"
- "net/url"
- "strings"
- "github.com/distribution/reference"
- "github.com/docker/docker/api/types"
- )
- // ImageImport creates a new image based on the source options.
- // It returns the JSON content in the response body.
- func (cli *Client) ImageImport(ctx context.Context, source types.ImageImportSource, ref string, options types.ImageImportOptions) (io.ReadCloser, error) {
- if ref != "" {
- // Check if the given image name can be resolved
- if _, err := reference.ParseNormalizedNamed(ref); err != nil {
- return nil, err
- }
- }
- query := url.Values{}
- query.Set("fromSrc", source.SourceName)
- query.Set("repo", ref)
- query.Set("tag", options.Tag)
- query.Set("message", options.Message)
- if options.Platform != "" {
- query.Set("platform", strings.ToLower(options.Platform))
- }
- for _, change := range options.Changes {
- query.Add("changes", change)
- }
- resp, err := cli.postRaw(ctx, "/images/create", query, source.Source, nil)
- if err != nil {
- return nil, err
- }
- return resp.body, nil
- }
|