Каково значение пользователя в `/etc/sub{u,g}id`? (Помогите мне найти пространства имен пользователей)

Я хотел бы убедиться, что любой пользователь внутри моего контейнера докеров всегда сопоставляется с конкретным пользователем на моем хосте докеров. Я пытался использовать эту ссылку https://stackoverflow.com/a/35854547/1020678

Имя пользователя в /etc/subuid, по-видимому, используется строго как ключ для сопоставления со значением: <start id>:<range>, но кроме этого, похоже, оно не имеет никакой цели.

Что меня действительно смущает, так это необходимость пользователя в /etc/subuid, когда у этого пользователя, похоже, нет разрешения на запись в файловую систему при монтировании томов в контейнере докеров.

Следуя примеру в ссылке, делаю от имени пользователя ns1 следующее:

$ mkdir test && docker run -ti -v $(pwd)/test:/tmp alpine touch /tmp/foobar

возвращает: touch: /tmp/foobar: Permission denied

Похоже, что пользователь ns1 не имеет преимуществ перед --userns-remap=ns1, так зачем тогда этот пользователь требуется при включении пользовательских пространств имен для ns1-root и ns1-user1? Эти пользователи могут записывать в том docker, если права установлены правильно, но почему бы и нет ns1?

Возможно ли достичь моей цели, или мне нужно явно определить всех пользователей/групп как внутри, так и вне моего контейнера, используя смещение начального идентификатора в /etc/subuid (500000 в примере, на который я ссылаюсь)?


person jollyroger    schedule 20.01.2017    source источник