diff --git a/pkg/pidfile/pidfile.go b/pkg/pidfile/pidfile.go index e1ac6bee35..d832fea7a2 100644 --- a/pkg/pidfile/pidfile.go +++ b/pkg/pidfile/pidfile.go @@ -7,8 +7,11 @@ import ( "fmt" "io/ioutil" "os" + "path/filepath" "strconv" "strings" + + "github.com/docker/docker/pkg/system" ) // PIDFile is a file used to store the process ID of a running process. @@ -33,6 +36,10 @@ func New(path string) (*PIDFile, error) { if err := checkPIDFileAlreadyExists(path); err != nil { return nil, err } + // Note MkdirAll returns nil if a directory already exists + if err := system.MkdirAll(filepath.Dir(path), os.FileMode(0755)); err != nil { + return nil, err + } if err := ioutil.WriteFile(path, []byte(fmt.Sprintf("%d", os.Getpid())), 0644); err != nil { return nil, err }