我正在尝试使用以下脚本运行容器:
Dockerfile
FROM alpine:latest
USER root
RUN apk update \
&& apk upgrade \
&& apk --no-cache add busybox-suid su-exec
RUN chmod u+s /sbin/su-exec
RUN groupadd -r -g 2001 myuser \
&& useradd -r -u 1001 -g myuser myuser
RUN mkdir /home/myuser \
&& chown myuser /home/myuser
COPY --chown=myuser:myuser entrypoint.sh /home/myuser/entrypoint.sh
COPY --chown=myuser:myuser cronjob /home/myuser/cronjob
USER myuser
RUN crontab /home/myuser/cronjob
WORKDIR /home/myuser
ENTRYPOINT["./entrypoint.sh"]
entrypoint.sh
#!/bin/sh
# Start cron daemon.
su-exec root crond -f -l 8
# Start application.
我阅读过提升权限不是好的实践方法。因此,我希望在我的脚本中消除su-exec
+chmod u+s /sbin/su-exec
的使用。我也尝试过su
和sudo
,但是它们需要root
密码,所以我改用了su-exec
。我需要提升权限,因为crond
必须以root
启动才能正常运行。这个容器将在Kubernetes中运行。
有更好的方法吗?
setpgid: 操作不允许
的错误提示。 - And Finallycrond
运行为非1 PID 如此处所述。它能够正常工作。 - Lenar Hoyt