2015-04-27 89 views
13

我是新来的码头工人。当我使用命令运行像ubuntu镜像这样的Docker镜像时,如何以非root用户身份运行docker映像?

sudo docker run -i -t ubuntu:14.04 

默认情况下,它以root身份进入容器,像这样。 enter image description here

我搜索这个方面,但我完全对这个话题首发我找不到任何的如何启动一个码头工人的图像作为非root用户。

如果有人用一个如何以非root用户身份运行docker镜像的例子进行说明,那将会很棒。

回答

16

docker run命令的-u parameter允许您指定不同的用户。在你的情况,并假设你有一个在你的码头工人形象命名foo用户,你可以运行:

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

注:-u参数是Dockerfile的USER指令的等价物。

+1

是否将用户添加到_docker_组? –

+0

我们是否需要此用户(英国)在我们正在运行的码头集装箱内?否则图像将如何识别该用户?正如Adrian所问,你是指码头组? – Stranger

+0

另外它会抛出错误,'FATA [0000]来自守护进程的错误响应:无法启动容器acbd05873a7a22fdd538c931f9e6ee54184ff5f3ac6c281d732bbde1823cb731:[8]系统错误:无法找到用户uk' – Stranger

-2

不建议允许在不使用sudo的情况下运行docker,因为Docker没有内置审计或日志记录,而sudo却是。 如果您想让docker访问非root用户,Red Hat建议设置sudo。 向/ etc/sudoers添加如下条目。

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

现在,设立在〜/ .bashrc一个别名运行泊坞窗命令:

alias docker="sudo /usr/bin/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用户身份运行的内容,而您正在讨论以容器外的非root用户身份运行。非常不同的问题。 –

0

这是无可否认的哈克,但对你有好处开始只是为了快速测试的东西那些小巧的容器:

#!/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

相关问题