daemon: reorder mounts before setting them

Signed-off-by: Antonio Murdaca <runcom@redhat.com>
This commit is contained in:
Antonio Murdaca 2016-04-26 10:20:17 +02:00
parent dc98cb534e
commit 6a8ea46c67
2 changed files with 15 additions and 7 deletions

View File

@ -5,6 +5,7 @@ import (
"io" "io"
"os" "os"
"path/filepath" "path/filepath"
"sort"
"strconv" "strconv"
"strings" "strings"
@ -635,13 +636,14 @@ func (daemon *Daemon) createSpec(c *container.Container) (*libcontainerd.Spec, e
return nil, err return nil, err
} }
mounts, err := daemon.setupMounts(c) ms, err := daemon.setupMounts(c)
if err != nil { if err != nil {
return nil, err return nil, err
} }
mounts = append(mounts, c.IpcMounts()...) ms = append(ms, c.IpcMounts()...)
mounts = append(mounts, c.TmpfsMounts()...) ms = append(ms, c.TmpfsMounts()...)
if err := setMounts(daemon, &s, c, mounts); err != nil { sort.Sort(mounts(ms))
if err := setMounts(daemon, &s, c, ms); err != nil {
return nil, fmt.Errorf("linux mounts: %v", err) return nil, fmt.Errorf("linux mounts: %v", err)
} }

View File

@ -746,6 +746,14 @@ func (s *DockerSuite) TestRunWithShmSize(c *check.C) {
c.Assert(shmSize, check.Equals, "1073741824") c.Assert(shmSize, check.Equals, "1073741824")
} }
func (s *DockerSuite) TestRunTmpfsMountsEnsureOrdered(c *check.C) {
tmpFile, err := ioutil.TempFile("", "test")
c.Assert(err, check.IsNil)
defer tmpFile.Close()
out, _ := dockerCmd(c, "run", "--tmpfs", "/run", "-v", tmpFile.Name()+":/run/test", "busybox", "ls", "/run")
c.Assert(out, checker.Contains, "test")
}
func (s *DockerSuite) TestRunTmpfsMounts(c *check.C) { func (s *DockerSuite) TestRunTmpfsMounts(c *check.C) {
// TODO Windows (Post TP5): This test cannot run on a Windows daemon as // TODO Windows (Post TP5): This test cannot run on a Windows daemon as
// Windows does not support tmpfs mounts. // Windows does not support tmpfs mounts.
@ -839,10 +847,8 @@ func (s *DockerSuite) TestRunSeccompProfileDenyChmod(c *check.C) {
] ]
}` }`
tmpFile, err := ioutil.TempFile("", "profile.json") tmpFile, err := ioutil.TempFile("", "profile.json")
c.Assert(err, check.IsNil)
defer tmpFile.Close() defer tmpFile.Close()
if err != nil {
c.Fatal(err)
}
if _, err := tmpFile.Write([]byte(jsonData)); err != nil { if _, err := tmpFile.Write([]byte(jsonData)); err != nil {
c.Fatal(err) c.Fatal(err)