我是码头工人的新手。当我使用命令运行像ubuntu图像这样的docker图像时,
sudo docker run -i -t ubuntu:14.04
默认情况下,它会像这样以root身份进入容器。
我搜索了这个,但我无法获得如何以非root用户身份启动docker镜像,因为我完全是这个主题的首发。
如果有人解释如何以非root用户身份运行docker镜像,那将会很棒。
答案 0 :(得分:18)
docker run
命令具有-u
parameter,允许您指定其他用户。在您的情况下,并且假设您的泊坞窗图片中有一个名为foo
的用户,您可以运行:
sudo docker run -i -t -u foo ubuntu:14.04 /bin/bash
答案 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"
我在这里使用的完整版脚本:
答案 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