github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/api/client/lib/container_commit.go (about)

     1  package lib
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/url"
     6  
     7  	"github.com/docker/docker/api/types"
     8  )
     9  
    10  // ContainerCommit applies changes into a container and creates a new tagged image.
    11  func (cli *Client) ContainerCommit(options types.ContainerCommitOptions) (types.ContainerCommitResponse, error) {
    12  	query := url.Values{}
    13  	query.Set("container", options.ContainerID)
    14  	query.Set("repo", options.RepositoryName)
    15  	query.Set("tag", options.Tag)
    16  	query.Set("comment", options.Comment)
    17  	query.Set("author", options.Author)
    18  	for _, change := range options.Changes {
    19  		query.Add("changes", change)
    20  	}
    21  	if options.Pause != true {
    22  		query.Set("pause", "0")
    23  	}
    24  
    25  	var response types.ContainerCommitResponse
    26  	resp, err := cli.post("/commit", query, options.Config, nil)
    27  	if err != nil {
    28  		return response, err
    29  	}
    30  	defer ensureReaderClosed(resp)
    31  
    32  	if err := json.NewDecoder(resp.body).Decode(&response); err != nil {
    33  		return response, err
    34  	}
    35  
    36  	return response, nil
    37  }