From 844fb2961976d1bca52cc8560abf6b1ac2ae754a Mon Sep 17 00:00:00 2001 From: Morgan Bauer Date: Mon, 12 Oct 2015 14:38:12 -0700 Subject: [PATCH] refactor use of container struct from daemon - use Exists instead of Get - push Get inside of daemonbuilder Signed-off-by: Morgan Bauer --- api/server/router/local/image.go | 8 ++++---- builder/dockerfile/builder.go | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/api/server/router/local/image.go b/api/server/router/local/image.go index dbaae16524..6610157f84 100644 --- a/api/server/router/local/image.go +++ b/api/server/router/local/image.go @@ -16,6 +16,7 @@ import ( "github.com/docker/docker/builder/dockerfile" "github.com/docker/docker/cliconfig" "github.com/docker/docker/daemon/daemonbuilder" + derr "github.com/docker/docker/errors" "github.com/docker/docker/graph" "github.com/docker/docker/graph/tags" "github.com/docker/docker/pkg/archive" @@ -63,12 +64,11 @@ func (s *router) postCommit(ctx context.Context, w http.ResponseWriter, r *http. Config: c, } - container, err := s.daemon.Get(cname) - if err != nil { - return err + if !s.daemon.Exists(cname) { + return derr.ErrorCodeNoSuchContainer.WithArgs(cname) } - imgID, err := dockerfile.Commit(container, s.daemon, commitCfg) + imgID, err := dockerfile.Commit(cname, s.daemon, commitCfg) if err != nil { return err } diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go index 8b8c6e8735..9dca0507f4 100644 --- a/builder/dockerfile/builder.go +++ b/builder/dockerfile/builder.go @@ -256,7 +256,12 @@ func BuildFromConfig(config *runconfig.Config, changes []string) (*runconfig.Con // 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) { +func Commit(containerName string, d *daemon.Daemon, c *CommitConfig) (string, error) { + container, err := d.Get(containerName) + if err != nil { + return "", err + } + // 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")