【发布时间】:2020-12-19 20:02:42
【问题描述】:
我正在从以下 Dockerfile 和以下命令 docker build --rm -f "Dockerfile" -t non_root_image_plz_work . 构建映像:
DockerFile
FROM node:14.7.0-buster-slim AS apache_for_selenium
# Create non-root group and user
RUN addgroup --system shared-folder \
&& adduser --system --home /var/cache/shared-folder --group shared-folder --uid 1001
# Make Port accessable
EXPOSE 80/tcp
# Set Node env.Name
ENV NODE_ENV=dev
RUN apt-get -qq update && apt-get -qq install -y --no-install-recommends nano git openssl bash musl curl apache2 apache2-utils systemd && \
systemctl enable apache2 && npm config set registry http://localhost:5000/repository/repo && \
npm i -g pm2 serve && mkdir /usr/share/shared-folder
RUN ln -sf /dev/stdout /var/log/apache2/access.log && \
ln -sf /dev/stderr /var/log/apache2/error.log
WORKDIR /usr/share/shared-folder
COPY . /usr/share/shared-folder/
RUN npm install && npm cache clean --force && npm cache verify && \
rm /var/www/html/index.html && \
ln -s /usr/share/shared-folder/mochawesome-report /var/www/html/mochawesome-report && \
chown www-data -R /var/www/html/mochawesome-report && chgrp www-data -R /var/www/html/mochawesome-report
VOLUME /usr/share/shared-folder/mochawesome-report
USER 1001
CMD [ "sh", "-c", "service apache2 start ; pm2-runtime process.yml --no-daemon" ]
当我尝试使用docker run non_root_image_plz_work 运行映像时,我收到以下错误:
运行docker run 命令后出错:
启动 Apache httpd Web 服务器:apache2 失败!
apache2 配置测试失败。 ... (警告)。
配置测试的输出是:
mkdir: 无法创建目录 '/var/run/apache2': 权限被拒绝
chown:更改“/var/lock/apache2.3FGoa8Y71E”的所有权:不允许操作
这似乎是一个权限问题,好像我没有以非 root 用户身份正确运行容器。关于如何让容器以非 root 用户身份正常运行的任何建议?
注意:我在 Dockerfile 中使用了一个虚拟注册表,因为我不想显示实际的注册表,谢谢
【问题讨论】:
标签: apache docker dockerfile containers root