Как запустить изображение докеров в качестве пользователя без полномочий root?
Я новичок в докере. Когда я запускаю изображения докеров, например, изображение ubuntu, используя команду,
sudo docker run -i -t ubuntu:14.04
По умолчанию он вводит в контейнер как root, как это.
![enter image description here]()
Я искал это, но я не мог получить ни одного из того, как запустить изображение докеров в качестве пользователя без root, поскольку я полностью запустил этот раздел.
Было бы здорово, если бы кто-то объяснил пример использования образа докеров в качестве пользователя без root.
Ответы
Ответ 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