如何在Ubuntu内部Docker下以非根用户身份执行cron作业

如何在Ubuntu内部Docker下以非根用户身份执行cron作业,docker,ubuntu,cron,Docker,Ubuntu,Cron,这是我试图创建的图像的Dockerfile。非root用户正在本地计算机上模拟主机用户 FROM ubuntu:bionic RUN apt-get -yqq update && apt-get -yqq install cron passwd openssl strace RUN groupadd -g 1000 hostuser && useradd -l -u 1000 -m -s /bin/bash -p $(openssl passwd -1 test1

这是我试图创建的图像的Dockerfile。非root用户正在本地计算机上模拟主机用户

FROM ubuntu:bionic
RUN apt-get -yqq update && apt-get -yqq install cron passwd openssl strace
RUN groupadd -g 1000 hostuser && useradd -l -u 1000 -m -s /bin/bash -p $(openssl passwd -1 test1) -g hostuser hostuser
COPY hello-cron /etc/cron.d/hello-cron
RUN sudo chmod 0644 /etc/cron.d/hello-cron
COPY hello-cron-root /etc/cron.d/hello-cron-root
RUN sudo chmod 0644 /etc/cron.d/hello-cron-root
RUN touch /var/log/cron.log
COPY cron.allow /etc/cron.allow
#CMD /usr/sbin/cron -L 15 && tail -f /var/log/cron.log
CMD strace /usr/sbin/cron -f -L 15
这是hello cron的文件:

* * * * * hostuser echo "Hello World" >> /var/log/cron.log 2>&1

这是文件hello cron root:

* * * * * root echo "Hello World Root" >> /var/log/cron.log 2>&1

* * * * * root /usr/local/bin/hostuser-run >> /var/log/cron.log 2>&1
这是cron.allow文件:

hostuser

当我构建并执行映像时,只有在根目录下执行的作业才会给出一些输出。斯特拉斯帮不了多少忙。有什么想法吗


不幸的是,我不能使用阿尔卑斯山或其他东西。我需要使用Ubuntu Bionic来完成这项工作。

到目前为止,这是这个设置中唯一有效的东西:

FROM ubuntu:bionic
RUN apt-get -yqq update && apt-get -yqq install cron passwd openssl sudo
RUN groupadd -g 1000 hostuser && useradd -l -u 1000 -m -s /bin/bash -p $(openssl passwd -1 test1) -g hostuser hostuser
COPY hello-cron-root /etc/cron.d/hello-cron-root
RUN sudo chmod 0644 /etc/cron.d/hello-cron-root
RUN touch /var/log/cron.log
COPY cron.allow /etc/cron.allow
COPY hostuser-run /usr/local/bin/hostuser-run
RUN chmod +x /usr/local/bin/hostuser-run
CMD /usr/sbin/cron -L 15 && tail -f /var/log/cron.log
这是主机用户运行:

#/usr/bin/env bash
sudo-H-s-u'hostuser'echo“我们以$USER的身份运行”
这是文件hello cron root:

* * * * * root echo "Hello World Root" >> /var/log/cron.log 2>&1

* * * * * root /usr/local/bin/hostuser-run >> /var/log/cron.log 2>&1

总而言之,鉴于只有根cron作业在docker下工作,以在不同的用户使用帮助器脚本下使用
sudo-u

执行内容,因此,到目前为止,这是此设置中唯一有效的方法:

FROM ubuntu:bionic
RUN apt-get -yqq update && apt-get -yqq install cron passwd openssl sudo
RUN groupadd -g 1000 hostuser && useradd -l -u 1000 -m -s /bin/bash -p $(openssl passwd -1 test1) -g hostuser hostuser
COPY hello-cron-root /etc/cron.d/hello-cron-root
RUN sudo chmod 0644 /etc/cron.d/hello-cron-root
RUN touch /var/log/cron.log
COPY cron.allow /etc/cron.allow
COPY hostuser-run /usr/local/bin/hostuser-run
RUN chmod +x /usr/local/bin/hostuser-run
CMD /usr/sbin/cron -L 15 && tail -f /var/log/cron.log
这是主机用户运行:

#/usr/bin/env bash
sudo-H-s-u'hostuser'echo“我们以$USER的身份运行”
这是文件hello cron root:

* * * * * root echo "Hello World Root" >> /var/log/cron.log 2>&1

* * * * * root /usr/local/bin/hostuser-run >> /var/log/cron.log 2>&1
总而言之,假设只有根cron作业在docker下工作,以在不同的用户下执行东西,请使用带有
sudo-u
的helper脚本