gpt4 book ai didi

docker - 如何在 Alpine 中以非 root 身份运行 Cron

转载 作者:行者123 更新时间:2023-12-04 09:24:20 32 4
gpt4 key购买 nike

我正在尝试使用以下脚本运行容器:

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"]

入口点.sh

#!/bin/sh

# Start cron daemon.
su-exec root crond -f -l 8

# Start application.

我读到提升权限不是好的做法。因此,我希望在我的脚本中消除 su-exec + chmod u+s/sbin/su-exec 的使用。我也尝试了 susudo 但他们要求输入 root 密码所以我改用 su-exec .我需要提升权限,因为 crond 不以 root 身份启动它就无法正常运行。该容器将在 Kubernetes 中运行。

有更好的方法吗?

最佳答案

crond 在遵循以下答案后现在作为 myuser 运行。

https://github.com/gliderlabs/docker-alpine/issues/381#issuecomment-621946699

Dockerfile

FROM alpine:latest

USER root

RUN apk update \
&& apk upgrade \
&& apk --no-cache add dcron libcap

RUN groupadd -r -g 2001 myuser \
&& useradd -r -u 1001 -g myuser myuser

RUN mkdir /home/myuser \
&& chown myuser /home/myuser

RUN chown myuser:myuser /usr/sbin/crond \
&& setcap cap_setgid=ep /usr/sbin/crond

COPY --chown=myuser:myuser cronjob /home/myuser/cronjob
RUN crontab /home/myuser/cronjob

COPY --chown=myuser:myuser entrypoint.sh /home/myuser/entrypoint.sh

USER myuser

WORKDIR /home/myuser
ENTRYPOINT["./entrypoint.sh"]

入口点.sh

#!/bin/sh

# Start cron daemon.
crond -b -l 8

# Start application.

关于docker - 如何在 Alpine 中以非 root 身份运行 Cron,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63046301/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com