Update libcontainer to include PRs with fixes to systemd cgroup driver
PR opencontainers/runc#1754 works around an issue in manager.Apply(-1) that makes Kubelet startup hang when using systemd cgroup driver (by adding a timeout) and further PR opencontainers/runc#1772 fixes that bug by checking the proper error status before waiting on the channel. PR opencontainers/runc#1776 checks whether Delegate works in slices, which keeps libcontainer systemd cgroup driver working on systemd v237+. PR opencontainers/runc#1781 makes the channel buffered, so if we time out waiting on the channel, the updater will not block trying to it since there are no longer any consumers.
This commit is contained in:
14
vendor/github.com/opencontainers/runc/libcontainer/container_linux.go
generated
vendored
14
vendor/github.com/opencontainers/runc/libcontainer/container_linux.go
generated
vendored
@@ -377,10 +377,6 @@ func (c *linuxContainer) start(process *Process, isInit bool) error {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
c.state = &runningState{
|
||||
c: c,
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -1801,8 +1797,7 @@ func (c *linuxContainer) bootstrapData(cloneFlags uintptr, nsMaps map[configs.Na
|
||||
Value: []byte(c.newgidmapPath),
|
||||
})
|
||||
}
|
||||
// The following only applies if we are root.
|
||||
if !c.config.Rootless {
|
||||
if requiresRootOrMappingTool(c.config) {
|
||||
// check if we have CAP_SETGID to setgroup properly
|
||||
pid, err := capability.NewPid(0)
|
||||
if err != nil {
|
||||
@@ -1847,3 +1842,10 @@ func ignoreTerminateErrors(err error) error {
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func requiresRootOrMappingTool(c *configs.Config) bool {
|
||||
gidMap := []configs.IDMap{
|
||||
{ContainerID: 0, HostID: os.Getegid(), Size: 1},
|
||||
}
|
||||
return !reflect.DeepEqual(c.GidMappings, gidMap)
|
||||
}
|
||||
|
Reference in New Issue
Block a user