无法创建目录.Docker容器内的权限被拒绝

Vad*_*kin 18 ubuntu sudoers 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
Run Code Online (Sandbox Code Playgroud)

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

lar*_*sks 28

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

尝试改为:

RUN mkdir -p /newfolder
RUN chown newuser /newfolder
USER newuser
WORKDIR /newfolder
Run Code Online (Sandbox Code Playgroud)

这将创建目录as root,然后chown它.

  • 您使用了“USER”指令,因此当您在容器内运行命令时,您不是“root”。如果您想成为“root”,则需要一个权限升级工具,例如“sudo”或“su”,或者需要重新设计容器以不使用“USER”指令并考虑使用“ENTRYPOINT”脚本之类的东西当它运行你的“CMD”时,将使用“sudo”或类似于*drop*权限。 (2认同)

Kah*_*ich 23

这是一个适合我创建具有非用户权限的文件夹的过程

FROM solr:8
USER root
RUN mkdir /searchVolume
RUN chown solr:solr /searchVolume
USER solr
Run Code Online (Sandbox Code Playgroud)

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