// CommitContainer commits a container to an image with a specific tag. // The new image ID is returned func (d *stiDocker) CommitContainer(opts CommitContainerOptions) (string, error) { repository, tag := docker.ParseRepositoryTag(opts.Repository) dockerOpts := docker.CommitContainerOptions{ Container: opts.ContainerID, Repository: repository, Tag: tag, } if opts.Command != nil || opts.Entrypoint != nil { config := docker.Config{ Cmd: opts.Command, Entrypoint: opts.Entrypoint, Env: opts.Env, Labels: opts.Labels, User: opts.User, } dockerOpts.Run = &config glog.V(2).Infof("Committing container with dockerOpts: %+v, config: %+v", dockerOpts, config) } image, err := d.client.CommitContainer(dockerOpts) if err == nil && image != nil { return image.ID, nil } return "", err }
func (client *FSouza_InstanceClient) Commit(logger log.Log, tag string, message string) bool { id := client.instance.MachineName() config := client.settings.Config repo := client.settings.Repository author := client.settings.Author if repo == "" { repo, _ = client.GetImageName() } options := docker.CommitContainerOptions{ Container: id, Repository: repo, Tag: tag, Run: &config, } if message != "" { options.Message = message } if author != "" { author = client.conf.Author } _, err := client.backend.CommitContainer(options) if err != nil { logger.Warning("Failed to commit container changes to an image [" + client.instance.Id() + ":" + id + "] : " + tag) return false } else { client.backend.Refresh(true, false) logger.Message("Committed container changes to an image [" + client.instance.Id() + ":" + id + "] : " + tag) return true } }