docker - 如何在 docker 容器中使用 sudo?

标签 docker sudo linux-containers

通常,docker 容器使用用户 root 运行。我想使用不同的用户,使用 docker 的 USER 指令没问题。但是这个用户应该能够在容器内使用 sudo。缺少此命令。

这是一个用于此目的的简单 Dockerfile:

FROM ubuntu:12.04

RUN useradd docker && echo "docker:docker" | chpasswd
RUN mkdir -p /home/docker && chown -R docker:docker /home/docker

USER docker
CMD /bin/bash

运行这个容器,我使用用户 'docker' 登录。当我尝试使用 sudo 时,找不到该命令。所以我尝试使用

在我的 Dockerfile 中安装 sudo
RUN apt-get install sudo

这导致 无法找到包 sudo

最佳答案

刚刚收到。正如 regan 所指出的,我必须将用户添加到 sudoers 组。但主要原因是我忘记更新存储库缓存,所以 apt-get 找不到 sudo 包。它现在正在工作。这是完整的代码:

FROM ubuntu:12.04

RUN apt-get update && \
      apt-get -y install sudo

RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo

USER docker
CMD /bin/bash

关于docker - 如何在 docker 容器中使用 sudo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25845538/

相关文章:

macos - 从 sudo 提升的脚本以标准用户身份运行命令

java - 使用 sudo 命令执行 tcl

python - 有没有办法同时使用 fabric run() 和 sudo() ?

process - 如何监控容器内的进程?

linux - 来自主机的容器的 tcp 连接的可见性

docker - 将二进制文件添加到Docker

django - 服务中 "environment"选项的无效插值格式 "web": "SECRET_KEY=

amazon-web-services - 将 Docker 从 Travis 部署到 AWS(或任何其他支持 SSH 的服务器)

linux - Linux 中的 init_user 命名空间是什么?

laravel - Ansible,从Docker容器运行命令时mysql连接被拒绝