Параметр -u/--user
для docker run
полезен только для локальных учетных записей, перечисленных в /etc/passwd
. Если хост-система интегрирована с ldap, у пользователей не будет записи в этом файле. Docker не работает, так как не может найти этих пользователей.
В приведенном ниже примере пользователь bhuvan
находится в ldap, но запуск докера не позволяет использовать эту учетную запись. Docker должен иметь возможность использовать механизм аутентификации хост-системы.
$ docker run --user=bhuvan --rm -i -t --net host centos:centos6 /bin/bash
2014/07/16 16:45:54 Error response from daemon: Cannot start container 95ef5ab02d7471b509fcaa37c22afe48b04af3c57db5b72264f84136c97bec39: finalize namespace setup user get supplementary groups Unable to find user bhuvan
Если вы запускаете докер в учетной записи bhuvan
, вы можете войти в контейнер как пользователь bhuvan
, установив флаг -u
следующим образом:
-u=$(id -u $(whoami)):$(id -g $(whoami))
Обратите внимание, что внутри контейнера вы увидите не имя, а фактические UID и GID.
@bhuvaneswaran Вам необходимо настроить это в своем контейнере. Интеграция с ldap сейчас невозможна.
Интеграция Ldap для Docker может стать возможной в будущем, но пока она не поддерживается. Это должно стать возможным после поддержки плагинов.
@louden Я столкнулся с этой же проблемой несколько лет спустя, и если я попытаюсь передать пользователя, и они будут храниться только в LDAP, а не в / etc / passwd, я не смогу использовать их внутри контейнера даже с вашим фрагментом кода .
К сожалению, я очень сомневаюсь, что наши сетевые администраторы оценили бы, что я создаю локального пользователя (если у меня есть разрешения) и запускаю докер с этим пользователем, просто чтобы обойти тот факт, что он не может запрашивать сетевую аутентификацию для пользователя, у которого нет " существуют "в системе согласно / etc / passwd.
Самый полезный комментарий
Если вы запускаете докер в учетной записи
bhuvan
, вы можете войти в контейнер как пользовательbhuvan
, установив флаг-u
следующим образом:Обратите внимание, что внутри контейнера вы увидите не имя, а фактические UID и GID.