Merge pull request #36526 from kolyshkin/ipc-ro
daemon/setMounts(): do not make /dev/shm ro
This commit is contained in:
commit
cda90892aa
2 changed files with 39 additions and 1 deletions
|
@ -667,7 +667,7 @@ func setMounts(daemon *Daemon, s *specs.Spec, c *container.Container, mounts []c
|
|||
if s.Root.Readonly {
|
||||
for i, m := range s.Mounts {
|
||||
switch m.Destination {
|
||||
case "/proc", "/dev/pts", "/dev/mqueue", "/dev":
|
||||
case "/proc", "/dev/pts", "/dev/shm", "/dev/mqueue", "/dev":
|
||||
continue
|
||||
}
|
||||
if _, ok := userMounts[m.Destination]; !ok {
|
||||
|
|
|
@ -48,3 +48,41 @@ func TestTmpfsDevShmNoDupMount(t *testing.T) {
|
|||
err = setMounts(&d, &s, c, ms)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
// TestIpcPrivateVsReadonly checks that in case of IpcMode: private
|
||||
// and ReadonlyRootfs: true (as in "docker run --ipc private --read-only")
|
||||
// the resulting /dev/shm mount is NOT made read-only.
|
||||
// https://github.com/moby/moby/issues/36503
|
||||
func TestIpcPrivateVsReadonly(t *testing.T) {
|
||||
d := Daemon{
|
||||
// some empty structs to avoid getting a panic
|
||||
// caused by a null pointer dereference
|
||||
idMappings: &idtools.IDMappings{},
|
||||
configStore: &config.Config{},
|
||||
}
|
||||
c := &container.Container{
|
||||
HostConfig: &containertypes.HostConfig{
|
||||
IpcMode: containertypes.IpcMode("private"),
|
||||
ReadonlyRootfs: true,
|
||||
},
|
||||
}
|
||||
|
||||
// We can't call createSpec() so mimick the minimal part
|
||||
// of its code flow, just enough to reproduce the issue.
|
||||
ms, err := d.setupMounts(c)
|
||||
assert.NoError(t, err)
|
||||
|
||||
s := oci.DefaultSpec()
|
||||
s.Root.Readonly = c.HostConfig.ReadonlyRootfs
|
||||
|
||||
err = setMounts(&d, &s, c, ms)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Find the /dev/shm mount in ms, check it does not have ro
|
||||
for _, m := range s.Mounts {
|
||||
if m.Destination != "/dev/shm" {
|
||||
continue
|
||||
}
|
||||
assert.Equal(t, false, inSlice(m.Options, "ro"))
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue