docker 如果将 runAsGroup、runAsUser 从 1000 更改为 0,图像仅在 kubernetes 上运行
docker image only runs on kubernetes if runAsGroup, runAsUser are changed to 0 from 1000
我想先从我是 docker/kubernetes 的新手开始,如果术语有误,我深表歉意。
我们正在尝试将我们的 docker 图像传输到 kubernetes 上的 运行。在kubernetes上部署时,生成的yaml文件有这一行:
securityContext:
runAsUser: 1000
runAsGroup: 1000
按原样,该网站无法正常工作,但如果从 1000 更改为 0,则可以正常工作。
我们怀疑它与我们的 Dockerfile 中的 apache 有关,但一直无法弄清楚如何修复它。这是 Dockerfile(删除了 ENV 和 COPY 命令):
FROM cern/cc7-base
EXPOSE 8083
RUN yum update -y && yum install -y \
ImageMagick \
httpd \
npm \
php \
python3-pip
RUN echo "alias python=python3" >>~/.bashrc
RUN yum update -y && yum install -y \
epel-release \
root \
python3-root
COPY requirements.txt /code/requirements.txt
RUN pip3 install -r /code/requirements.txt
RUN mkdir /db /run/secrets
RUN chown -R apache:apache /db /var/www /run/secrets
RUN ln -s /dev/stdout /etc/httpd/logs/access_log
RUN ln -s /dev/stderr /etc/httpd/logs/error_log
RUN chown apache:apache /etc/httpd/logs/error_log
RUN chown apache:apache /etc/httpd/logs/access_log
RUN chmod 666 /etc/httpd/logs/error_log
RUN chmod 666 /etc/httpd/logs/access_log
WORKDIR /webapp
COPY webapp/package.json /webapp/package.json
RUN npm install
COPY webapp /webapp
RUN npm run build
RUN cp -r /webapp/build /var/www/public
RUN cp -r /webapp/build /webapp/public
RUN mkdir /var/www/results /var/www/results/pdfs /var/www/results/pngs /var/www/results/jsons
RUN chmod 777 /var/www/results /var/www/results/pdfs /var/www/results/pngs /var/www/results/jsons
RUN chgrp -R 1000 /run && chmod -R g=u /run
RUN chgrp -R 1000 /etc/httpd/logs && chmod -R g=u /etc/httpd/logs
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
我尝试过的一些事情是:How to run Apache as non-root user?, https://www.henryxieblogs.com/2020/01/dockerfile-example-of-linux-nonroot.html, https://takac.dev/docker-run-apache-as-non-root-user-based-on-the-official-image/
我不确定他们是否没有解决我的问题,或者我只是执行了错误的解决方案。
更改 error_log、access_log 在 httpd.conf 中的位置为我解决了这个问题。我还将 Dockerfile 中的所有 apache:apache
更改为 1000:1000
。
我想从这里更改日志的位置:
我想先从我是 docker/kubernetes 的新手开始,如果术语有误,我深表歉意。
我们正在尝试将我们的 docker 图像传输到 kubernetes 上的 运行。在kubernetes上部署时,生成的yaml文件有这一行:
securityContext:
runAsUser: 1000
runAsGroup: 1000
按原样,该网站无法正常工作,但如果从 1000 更改为 0,则可以正常工作。
我们怀疑它与我们的 Dockerfile 中的 apache 有关,但一直无法弄清楚如何修复它。这是 Dockerfile(删除了 ENV 和 COPY 命令):
FROM cern/cc7-base
EXPOSE 8083
RUN yum update -y && yum install -y \
ImageMagick \
httpd \
npm \
php \
python3-pip
RUN echo "alias python=python3" >>~/.bashrc
RUN yum update -y && yum install -y \
epel-release \
root \
python3-root
COPY requirements.txt /code/requirements.txt
RUN pip3 install -r /code/requirements.txt
RUN mkdir /db /run/secrets
RUN chown -R apache:apache /db /var/www /run/secrets
RUN ln -s /dev/stdout /etc/httpd/logs/access_log
RUN ln -s /dev/stderr /etc/httpd/logs/error_log
RUN chown apache:apache /etc/httpd/logs/error_log
RUN chown apache:apache /etc/httpd/logs/access_log
RUN chmod 666 /etc/httpd/logs/error_log
RUN chmod 666 /etc/httpd/logs/access_log
WORKDIR /webapp
COPY webapp/package.json /webapp/package.json
RUN npm install
COPY webapp /webapp
RUN npm run build
RUN cp -r /webapp/build /var/www/public
RUN cp -r /webapp/build /webapp/public
RUN mkdir /var/www/results /var/www/results/pdfs /var/www/results/pngs /var/www/results/jsons
RUN chmod 777 /var/www/results /var/www/results/pdfs /var/www/results/pngs /var/www/results/jsons
RUN chgrp -R 1000 /run && chmod -R g=u /run
RUN chgrp -R 1000 /etc/httpd/logs && chmod -R g=u /etc/httpd/logs
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
我尝试过的一些事情是:How to run Apache as non-root user?, https://www.henryxieblogs.com/2020/01/dockerfile-example-of-linux-nonroot.html, https://takac.dev/docker-run-apache-as-non-root-user-based-on-the-official-image/
我不确定他们是否没有解决我的问题,或者我只是执行了错误的解决方案。
更改 error_log、access_log 在 httpd.conf 中的位置为我解决了这个问题。我还将 Dockerfile 中的所有 apache:apache
更改为 1000:1000
。
我想从这里更改日志的位置: