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

Cannot create directory. Permission denied inside docker container

在将非根用户添加到 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

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

试试看:

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

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

实际上我在创建 [root] 用户并完成 xyz 后遇到了这个问题。当我去重建我的 docker 时(即使使用强制重建),它给我各种权限被拒绝的错误。安全对我来说不是问题,所以只需添加

FROM ubuntu:latest

USER root

ENV TZ=Europe/Kiev
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update && apt-get install...

然后做我的新用户代码

RUN useradd...

我知道这不是完美的答案,但希望对您有所帮助!

这是我创建非用户权限文件夹的过程

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

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