Подтвердить что ты не робот

Как запустить изображение докеров в качестве пользователя без полномочий root?

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

sudo docker run -i -t ubuntu:14.04

По умолчанию он вводит в контейнер как root, как это. enter image description here

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

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

4b9b3361

Ответ 1

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

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

ПРИМЕЧАНИЕ. Параметр -u является эквивалентом USER для файла Docker.

Ответ 2

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

#!/bin/bash

set -eu

NAME=$1
IMG=$2

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

docker run -d -v /tmp:/tmp -v "/home/$USER:/home/$USER" -h "$NAME" --name "$NAME" "$IMG" /bin/bash

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

Ответ 3

Не рекомендуется разрешать запуск докеров без 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 как non-root, он будет разрешен и получит правильное ведение журнала.

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