Merge pull request #29365 from yongtang/29342-exec-user-after-restart
Fix `docker exec -u` issue after docker daemon restart
This commit is contained in:
commit
a60be6bfe3
2 changed files with 29 additions and 0 deletions
|
@ -149,6 +149,10 @@ func (daemon *Daemon) restore() error {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
container.RWLayer = rwlayer
|
container.RWLayer = rwlayer
|
||||||
|
if err := daemon.Mount(container); err != nil {
|
||||||
|
logrus.Errorf("Failed to mount container %v: %v", id, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
logrus.Debugf("Loaded container %v", container.ID)
|
logrus.Debugf("Loaded container %v", container.ID)
|
||||||
|
|
||||||
containers[container.ID] = container
|
containers[container.ID] = container
|
||||||
|
|
|
@ -2823,3 +2823,28 @@ func (s *DockerDaemonSuite) TestDaemonShutdownTimeoutWithConfigFile(c *check.C)
|
||||||
c.Assert(err, checker.IsNil)
|
c.Assert(err, checker.IsNil)
|
||||||
c.Assert(string(content), checker.Contains, expectedMessage)
|
c.Assert(string(content), checker.Contains, expectedMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test case for 29342
|
||||||
|
func (s *DockerDaemonSuite) TestExecWithUserAfterLiveRestore(c *check.C) {
|
||||||
|
testRequires(c, DaemonIsLinux)
|
||||||
|
s.d.StartWithBusybox(c, "--live-restore")
|
||||||
|
|
||||||
|
out, err := s.d.Cmd("run", "-d", "--name=top", "busybox", "sh", "-c", "addgroup -S test && adduser -S -G test test -D -s /bin/sh && top")
|
||||||
|
c.Assert(err, check.IsNil, check.Commentf("Output: %s", out))
|
||||||
|
|
||||||
|
waitRun("top")
|
||||||
|
|
||||||
|
out1, err := s.d.Cmd("exec", "-u", "test", "top", "id")
|
||||||
|
// uid=100(test) gid=101(test) groups=101(test)
|
||||||
|
c.Assert(err, check.IsNil, check.Commentf("Output: %s", out1))
|
||||||
|
|
||||||
|
// restart daemon.
|
||||||
|
s.d.Restart(c, "--live-restore")
|
||||||
|
|
||||||
|
out2, err := s.d.Cmd("exec", "-u", "test", "top", "id")
|
||||||
|
c.Assert(err, check.IsNil, check.Commentf("Output: %s", out2))
|
||||||
|
c.Assert(out1, check.Equals, out2, check.Commentf("Output: before restart '%s', after restart '%s'", out1, out2))
|
||||||
|
|
||||||
|
out, err = s.d.Cmd("stop", "top")
|
||||||
|
c.Assert(err, check.IsNil, check.Commentf("Output: %s", out))
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue