Resolve alloc/state directories to make Docker For Mac happy
* In -dev mode, `ioutil.TempDir` is used for the alloc and state directories. * `TempDir` uses `$TMPDIR`, which os OS X contains a per user directory which is under `/var/folder`. * `/var` is actually a symlink to `/private/var` * Docker For Mac validates the directories that are passed to bind and on OS X. That whitelist contains `/private`, but not `/var`. It does not expand the path, and so any paths in `$TMPDIR` fail the whitelist check. And thusly, by expanding the alloc/state directories the value passed for binding does contain `/private` and Docker For Mac is happy.
This commit is contained in:
parent
969213b13a
commit
f8a65a3b9d
|
@ -275,6 +275,12 @@ func (c *Client) init() error {
|
|||
if err != nil {
|
||||
return fmt.Errorf("failed creating temporary directory for the StateDir: %v", err)
|
||||
}
|
||||
|
||||
p, err = filepath.EvalSymlinks(p)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
c.config.StateDir = p
|
||||
}
|
||||
c.logger.Printf("[INFO] client: using state directory %v", c.config.StateDir)
|
||||
|
@ -290,6 +296,12 @@ func (c *Client) init() error {
|
|||
if err != nil {
|
||||
return fmt.Errorf("failed creating temporary directory for the AllocDir: %v", err)
|
||||
}
|
||||
|
||||
p, err = filepath.EvalSymlinks(p)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
c.config.AllocDir = p
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue