2015-04-27 12 views
13

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

sudo docker run -i -t ubuntu:14.04 

По умолчанию, она входит в контейнер, как корень, как это.

Я искал это, но я не мог понять, как начать изображение докеров в качестве пользователя без root, поскольку я полностью начинаю эту тему.

Было бы здорово, если бы кто-то объяснил пример использования образа докеров в качестве пользователя без root.

ответ

16

команда docker run имеет -u parameter, чтобы вы могли указать другого пользователя. В вашем случае, и если у вас есть пользователь с именем foo в вашем Docker изображения, вы можете запустить:

sudo docker run -i -t -u foo ubuntu:14.04 /bin/bash 

ПРИМЕЧАНИЕ: Параметр -u является эквивалентом USER инструкции для Dockerfile.

+1

Вы имеете в виду добавить пользователя в группу _docker_? –

+0

Нужен ли нам этот пользователь (uk) внутри контейнера докера, который мы запускаем? В противном случае, как изображение идентифицирует этого пользователя? И как спросил Адриан, вы имеете в виду группу докеров? – Stranger

+0

Также он выдает ошибку, 'FATA [0000] Ответ на ошибку от демона: не удается запустить контейнер acbd05873a7a22fdd538c931f9e6ee54184ff5f3ac6c281d732bbde1823cb731: [8] Системная ошибка: не удалось найти пользователя uk' – Stranger

-2

Не рекомендуется разрешать запуск докеров без sudo, поскольку Docker не имеет встроенного аудита или регистрации, в то время как sudo делает. Если вы хотите предоставить докеру доступ к пользователям, не являющимся root, Red Hat рекомендует настраивать sudo. Добавьте запись, как показано ниже, в/etc/sudoers.

dwalsh  ALL=(ALL)  NOPASSWD: /usr/bin/docker 

Теперь настроить псевдоним в ~/.bashrc для запуска команды Docker:

alias docker="sudo /usr/bin/docker" 

Теперь, когда пользователь выполняет команду Docker как некорневыми будет разрешено и получить надлежащее Ведение журнала.

docker run -ti --privileged -v /:/host fedora chroot /host 

Посмотрите на журнал или/var/log/messages.

journalctl -b | grep docker.*privileged 
Aug 04 09:02:56 dhcp-10-19-62-196.boston.devel.redhat.com sudo[23422]: dwalsh : TTY=pts/3 ; PWD=/home/dwalsh/docker/src/github.com/docker/docker ; USER=root ; COMMAND=/usr/bin/docker run -ti --privileged -v /:/host fedora chroot /host 
+4

Пользователь спрашивает о запуске как пользователя, не использующего root INSIDE, в то время как вы говорите о запуске как пользователь, не являющийся пользователем root вне контейнера. Очень разные вопросы. –

0

Это правда Hacky, но хорошо для тех быстрых маленьких контейнеров вы начинаете просто проверить что-то быстро:

#!/bin/bash 

set -eu 

NAME=$1 
IMG=$2 

#UID=$(id -u) 
USER=$(id -un) 
GID=$(id -g) 
GROUP=$(id -gn) 

# --privileged needed for dmidecode 
docker run --privileged -d -v /tmp:/tmp -v "/home/$USER:/home/$USER" -h "$NAME" --name "$NAME" "$IMG" init 

docker exec "$NAME" /bin/bash -c "groupadd -g $GID $GROUP && useradd -M -s /bin/bash -g $GID -u $UID $USER" 

Полная версия сценария я использую здесь:

https://github.com/ericcurtin/staging/blob/master/d-run

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