无法创建目录。 docker容器内的权限被拒绝

新手上路,请多包涵

在将非 root 用户添加到 sudoers 组的图像构建期间无法创建文件夹。这是我的 Dockerfile:

 FROM ubuntu:16.04

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

RUN adduser --disabled-password --gecos '' newuser \
    && adduser newuser sudo \
    && echo '%sudo ALL=(ALL:ALL) ALL' >> /etc/sudoers

USER newuser

RUN mkdir -p /newfolder
WORKDIR /newfolder

我收到错误: mkdir: cannot create directory '/newfolder': Permission denied

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

阅读 5.2k
2 个回答

Docker 容器内的文件系统就像 Docker 容器外的文件系统一样工作:如果要创建文件或目录,则需要适当的权限。在这种情况下,您尝试以非 root 用户身份创建 /newfolder (因为 USER 指令更改了用于运行其后任何命令的 UID)。这行不通,因为 /root 拥有并且具有模式 dr-xr-xr-x

请尝试:

 RUN mkdir -p /newfolder
RUN chown newuser /newfolder
USER newuser
WORKDIR /newfolder

这会将目录创建为 root ,然后是 chown 它。

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

这是一个对我有用的过程,可以像使用非用户权限一样创建文件夹

FROM solr:8
USER root
RUN mkdir /searchVolume
RUN chown solr:solr /searchVolume
USER solr

最后一行将登录名返回到 solr(或您拥有的任何用户)。

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

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