如何以非root用户身份运行docker镜像?

时间:2015-04-27 08:44:17

标签: docker

我是码头工人的新手。当我使用命令运行像ubuntu图像这样的docker图像时,

sudo docker run -i -t ubuntu:14.04

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

我搜索了这个,但我无法获得如何以非root用户身份启动docker镜像,因为我完全是这个主题的首发。

如果有人解释如何以非root用户身份运行docker镜像,那将会很棒。

4 个答案:

答案 0 :(得分:18)

docker run命令具有-u parameter,允许您指定其他用户。在您的情况下,并且假设您的泊坞窗图片中有一个名为foo的用户,您可以运行:

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

注意: -u参数相当于Dockerfile的USER指令。

答案 1 :(得分:1)

udocker 是运行在用户空间的 docker 的基本变体:

<块引用>

udocker 是一个基本的用户工具,可以在用户空间执行简单的 docker 容器,不需要 root 权限。允许非特权用户在 docker 不可用的 Linux 系统中下载和执行 docker 容器。它可用于在 Linux 批处理系统和交互式集群中拉取和执行 Docker 容器,这些集群由其他实体(例如网格基础架构或外部管理的批处理或交互式系统)管理。

答案 2 :(得分:0)

这无疑是个hacky,但对于那些快速开发的快速小容器来说很有用:

#!/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 :(得分:-2)

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

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

现在,在〜/ .bashrc中设置一个别名来运行docker命令:

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

现在,当用户以非root用户身份执行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
相关问题