// Commit will create a new image from a container's changes // TODO: remove daemon, make Commit a method on *Builder ? func Commit(container *daemon.Container, d *daemon.Daemon, c *CommitConfig) (string, error) { // It is not possible to commit a running container on Windows if runtime.GOOS == "windows" && container.IsRunning() { return "", fmt.Errorf("Windows does not support commit of a running container") } if c.Config == nil { c.Config = &runconfig.Config{} } newConfig, err := BuildFromConfig(c.Config, c.Changes) if err != nil { return "", err } if err := runconfig.Merge(newConfig, container.Config); err != nil { return "", err } commitCfg := &daemon.ContainerCommitConfig{ Pause: c.Pause, Repo: c.Repo, Tag: c.Tag, Author: c.Author, Comment: c.Comment, Config: newConfig, } img, err := d.Commit(container, commitCfg) if err != nil { return "", err } return img.ID, nil }