diff --git a/docker/docker.go b/docker/docker.go index 62f71d54d0..a0108630bd 100644 --- a/docker/docker.go +++ b/docker/docker.go @@ -9,7 +9,6 @@ import ( "github.com/dotcloud/docker/utils" "log" "os" - "path/filepath" "strings" ) @@ -71,19 +70,6 @@ func main() { return } - // Docker makes some assumptions about the "absoluteness" of flRoot - // ... so let's make sure it has no symlinks - if p, err := filepath.Abs(*flRoot); err != nil { - log.Fatalf("Unable to get absolute root (%s): %s", flRoot, err) - } else { - *flRoot = p - } - if p, err := filepath.EvalSymlinks(*flRoot); err != nil { - log.Fatalf("Unable to canonicalize root (%s): %s", flRoot, err) - } else { - *flRoot = p - } - eng, err := engine.New(*flRoot) if err != nil { log.Fatal(err) diff --git a/engine/engine.go b/engine/engine.go index 5da0a97233..ad830ce2e4 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -6,6 +6,7 @@ import ( "io" "log" "os" + "path/filepath" "runtime" "strings" ) @@ -79,9 +80,24 @@ func New(root string) (*Engine, error) { } } } + if err := os.MkdirAll(root, 0700); err != nil && !os.IsExist(err) { return nil, err } + + // Docker makes some assumptions about the "absoluteness" of root + // ... so let's make sure it has no symlinks + if p, err := filepath.Abs(root); err != nil { + log.Fatalf("Unable to get absolute root (%s): %s", root, err) + } else { + root = p + } + if p, err := filepath.EvalSymlinks(root); err != nil { + log.Fatalf("Unable to canonicalize root (%s): %s", root, err) + } else { + root = p + } + eng := &Engine{ root: root, handlers: make(map[string]Handler),