如何在 docker 容器中使用 sudo?

新手上路,请多包涵

通常,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

这导致 Unable to locate package sudo

原文由 drubb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
2 个回答

刚刚得到它。正如 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

原文由 drubb 发布,翻译遵循 CC BY-SA 3.0 许可协议

当容器中 sudo 和 apt-get 均不可用时,您也可以使用命令以 root 用户身份跳转到正在运行的容器中

docker exec -u root -t -i container_id /bin/bash

原文由 Tomáš Záluský 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题