2016-03-01 2 views
10

по умолчанию, когда вы запускаетеПодключение к докер контейнера в качестве пользователя, отличного от корня

docker run -it [myimage]

ИЛИ

docker attach [mycontainer]

подключения к терминалу в качестве корневого пользователя, но я хотел бы подключиться как другой пользователь. Это возможно?

+0

Да. 'docker run -user user_name' –

+0

и приложить? – Andy59469

+1

Нет такой опции для прикрепления. Вам нужно войти в систему как пользователь root, а затем 'su user_name' –

ответ

15

Для docker run:

Просто добавьте параметр --user <user> для изменения другого пользователя при запуске контейнера Докера.

docker run -it --user nobody busybox 

Для docker attach или docker exec:

Поскольку команда используется для подключения/выполнить в существующий процесс, поэтому он использует текущий пользователь там непосредственно.

docker run -it busybox # CTRL-P/Q to quit 
docker attach <container id> # then you have root user 
/# id 
uid=0(root) gid=0(root) groups=10(wheel) 

docker run -it --user nobody busybox # CTRL-P/Q to quit 
docker attach <container id> 
/$ id 
uid=99(nobody) gid=99(nogroup) 

Если вы действительно хотите, чтобы прикрепить к пользователю вы хотите иметь, то

  1. начать с пользователем run --user <user> или укажите это в Dockerfile с помощью USER
  2. изменения пользователем с помощью `су
3

В файле Dockerfile можно указать USER. Все последующие действия будут выполняться с использованием этой учетной записи. Вы можете указать USER одну строку перед CMD или ENTRYPOINT, если вы хотите использовать этого пользователя только при запуске контейнера (а не при создании изображения). Когда вы запускаете контейнер из результирующего изображения, вы будете прикрепляться как указанный пользователь.

11

Вы можете запустить оболочку в рабочем контейнере докера, используя команду:

docker exec -it --user root <container id> /bin/bash

+0

* root * является пользователем по умолчанию. Опция '--user' может быть опущена, когда команды должны выполняться как root, я полагаю. – Stphane

0

Единственный способ, которым я могу сделать это работа по:

docker run -it -e USER=$USER -v /etc/passwd:/etc/passwd -v `pwd`:/siem mono bash su - magnus

Так что я должен указывать как $ USER переменной окружения, а также точку и т.д./пароль файл/, Таким образом, я могу скомпилировать папку/siem и сохранить права собственности на файлы там, где нет root.

 Смежные вопросы

  • Нет связанных вопросов^_^