我正在尝试在openshift上部署metricbeat,经过数小时的工作,我无法正常工作。 同一映像在docker上正常运行。 谢谢
#Dockerfile
FROM docker.elastic.co/beats/metricbeat:7.2.0
COPY metricbeat.yml /usr/share/metricbeat/metricbeat.yml
USER root
RUN mkdir /var/log/metricbeat \
&& chown metricbeat /usr/share/metricbeat/metricbeat.yml \
&& chown metricbeat /usr/share/metricbeat/metricbeat \
&& chmod go-w /usr/share/metricbeat/metricbeat.yml \
&& chown metricbeat /var/log/metricbeat
COPY entrypoint.sh /usr/local/bin/custom-entrypoint
RUN chmod +x /usr/local/bin/custom-entrypoint \
&& chown metricbeat /usr/local/bin/custom-entrypoint
ENV PATH="/usr/share/metricbeat:${PATH}"
USER metricbeat
ENTRYPOINT [ "/usr/local/bin/custom-entrypoint" ]
#entrypoint.sh
#!/usr/bin/env bash
/usr/share/metricbeat/metricbeat -e --strict.perms=false -c /usr/share /metricbeat/metricbeat.yml
错误:/ usr / local / bin / custom-entrypoint:第2行:/ usr / share / metricbeat / metricbeat:权限被拒绝
答案 0 :(得分:0)
在创建映像时,Dockerfile显示在设置目录结构和权限时切换到root
用户,最后切换到USER metricbeat
来运行容器。
但是,默认情况下,OpenShift会为用户运行具有随机UID(在预配置范围内)的容器。
一种选择是按照Graham Dumpleton的建议放宽安全策略。
要使其在不放松安全性的情况下正常工作,我建议如下更改所有权:
RUN chown -R metricbeat:root /usr/share/metricbeat \
&& chmod -R 0775 /usr/share/metricbeat
...或在第一条RUN
指令中合并以上两个命令。