forked from docker-archive-public/docker.go-docker
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcontainer_commit.go
More file actions
Latest commit
55 lines (47 loc) · 1.45 KB
/
Copy pathcontainer_commit.go
File metadata and controls
55 lines (47 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package docker // import "docker.io/go-docker"
import (
"encoding/json"
"errors"
"net/url"
"github.com/docker/distribution/reference"
"docker.io/go-docker/api/types"
"golang.org/x/net/context"
)
// ContainerCommit applies changes into a container and creates a new tagged image.
func (cli*Client) ContainerCommit(ctx context.Context, containerstring, options types.ContainerCommitOptions) (types.IDResponse, error) {
varrepository, tagstring
ifoptions.Reference!="" {
ref, err:=reference.ParseNormalizedNamed(options.Reference)
iferr!=nil {
return types.IDResponse{}, err
}
if_, isCanonical:=ref.(reference.Canonical); isCanonical {
return types.IDResponse{}, errors.New("refusing to create a tag with a digest reference")
}
ref=reference.TagNameOnly(ref)
iftagged, ok:=ref.(reference.Tagged); ok {
tag=tagged.Tag()
}
repository=reference.FamiliarName(ref)
}
query:= url.Values{}
query.Set("container", container)
query.Set("repo", repository)
query.Set("tag", tag)
query.Set("comment", options.Comment)
query.Set("author", options.Author)
for_, change:=rangeoptions.Changes {
query.Add("changes", change)
}
if!options.Pause {
query.Set("pause", "0")
}
varresponse types.IDResponse
resp, err:=cli.post(ctx, "/commit", query, options.Config, nil)
iferr!=nil {
returnresponse, err
}
err=json.NewDecoder(resp.body).Decode(&response)
ensureReaderClosed(resp)
returnresponse, err
}