Skip to content
Permalink
Browse files

Merge pull request #39764 from yongtang/39353-subgid-subuid

Fix docker crash when creating namespaces with UID in /etc/subuid and /etc/subgid
  • Loading branch information...
thaJeztah committed Nov 8, 2019
2 parents e9bd017 + f09dc2f commit 1a88e0255496ca8a5ffa70e845da43381c7fc8ea
Showing with 23 additions and 2 deletions.
  1. +23 −2 daemon/daemon_unix.go
@@ -1203,11 +1203,32 @@ func setupRemappedRoot(config *config.Config) (*idtools.IdentityMapping, error)
// update remapped root setting now that we have resolved them to actual names
config.RemappedRoot = fmt.Sprintf("%s:%s", username, groupname)

// try with username:groupname, uid:groupname, username:gid, uid:gid,
// but keep the original error message (err)
mappings, err := idtools.NewIdentityMapping(username, groupname)
if err != nil {
if err == nil {
return mappings, nil
}
user, lookupErr := idtools.LookupUser(username)
if lookupErr != nil {
return nil, errors.Wrap(err, "Can't create ID mappings")
}
return mappings, nil
logrus.Infof("Can't create ID mappings with username:groupname %s:%s, try uid:groupname %d:%s", username, groupname, user.Uid, groupname)
mappings, lookupErr = idtools.NewIdentityMapping(fmt.Sprintf("%d", user.Uid), groupname)
if lookupErr == nil {
return mappings, nil
}
logrus.Infof("Can't create ID mappings with uid:groupname %d:%s, try username:gid %s:%d", user.Uid, groupname, username, user.Gid)
mappings, lookupErr = idtools.NewIdentityMapping(username, fmt.Sprintf("%d", user.Gid))
if lookupErr == nil {
return mappings, nil
}
logrus.Infof("Can't create ID mappings with username:gid %s:%d, try uid:gid %d:%d", username, user.Gid, user.Uid, user.Gid)
mappings, lookupErr = idtools.NewIdentityMapping(fmt.Sprintf("%d", user.Uid), fmt.Sprintf("%d", user.Gid))
if lookupErr == nil {
return mappings, nil
}
return nil, errors.Wrap(err, "Can't create ID mappings")
}
return &idtools.IdentityMapping{}, nil
}

0 comments on commit 1a88e02

Please sign in to comment.
You can’t perform that action at this time.