如何从非root用户运行docker容器?

时间:2020-02-28 18:45:59

标签: docker docker-compose dockerfile

如何使Docker容器以非root用户身份运行,并拥有非root用户拥有的工作目录(及其文件)。我可以在各种在线教程中找到的变体由于某种原因而无法使用,/var/www中的文件仍归root root所有。

下面是我的Dockerfile,我使用docker-compose来构建和运行容器。主机系统是Windows 10。

FROM php:7.4-fpm

ARG user
ARG uid

RUN apt-get update && apt-get install -y \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

RUN apt-get clean && rm -rf /var/lib/apt/lists/*

RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

WORKDIR /var/www

USER $user

2 个答案:

答案 0 :(得分:1)

只需添加

RUN chown $user:$user -R /var/www

在您使用WORKDIR指令之前。同样,您可以根据需要更改其他位置的所有权。

答案 1 :(得分:1)

您可以尝试使用此docker文件

FROM php:7.4-fpm

ARG user
ARG uid

RUN apt-get update && apt-get install -y \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

RUN addgroup -g $uid $user && \
    adduser -S -G $user -u $uid -h $user

RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN chown $user:$user -R /var/www

WORKDIR /var/www

USER $user

需要进行此更改以确保在docker映像中创建了用户

RUN addgroup -g $uid $user && \
    adduser -S -G $user -u $uid -h $user

这需要将文件的所有权更改为新用户

RUN chown $user:$user -R /var/www