如何以非root用户身份运行docker映像?
我是docker工人。 当我使用这个命令运行像ubuntu镜像这样的Docker镜像时,
sudo docker run -i -t ubuntu:14.04
默认情况下,它以root身份进入容器。
我search了这个,但我不能得到任何如何作为一个非root用户启动一个docker的形象,因为我完全是这个主题的起始者。
如果有人解释如何以非root用户的身份运行Docker镜像,这将是非常好的。
docker run
命令具有-u
参数以允许您指定不同的用户。 在你的情况下, 假设你的docker镜像中有一个名为foo
的用户 ,你可以运行:
sudo docker run -i -t -u foo ubuntu:14.04 /bin/bash
注: -u
参数等同于Dockerfile的USER
指令。
这种做法虽然很冒险,但是对于那些快速的小容器来说,你只是为了快速testing一下而已:
#!/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"
我在这里使用的脚本的完整版本:
不build议允许在不使用sudo的情况下运行docker,因为在sudo中,Docker没有内置审计或日志logging。 如果你想让Docker访问非root用户,Red Hatbuild议设置sudo。 在/ etc / sudoers中添加如下所示的条目。
dwalsh ALL=(ALL) NOPASSWD: /usr/bin/docker
现在,在〜/ .bashrc中设置一个运行docker命令的别名:
alias docker="sudo /usr/bin/docker"
现在,当用户以非root用户身份执行docker命令时,它将被允许并获得正确的日志logging。
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