我正在尝试构建一个运行R和cron的docker容器。我需要的是在启动容器时使cron自动运行。
我的dockerfile如下:
# Install R version 3.6
FROM r-base:3.6.0
#install crontab
RUN apt-get update && apt-get -y install cron
# also tried CMD /etc/init.d/cron start
CMD cron
然后我构建映像并在bash中运行容器。 我检查了cron的状态:
/etc/init.d/cron status
我的cron状态如下:
[FAIL] cron is not running ... failed!
我能够通过手动启动cron来启动cron:
/etc/init.d/cron start
我的问题是我应该如何修改我的dockerfile(第CMD
行),以便在docker容器启动时cron自动启动?
非常感谢。
答案 0 :(得分:1)
-f
将在后台启动cron,以便您的容器在创建后立即死亡。
在第二个选项中,添加# Install R version 3.6
FROM r-base:3.6.0
#install crontab
RUN apt-get update && apt-get -y install cron
# also tried CMD /etc/init.d/cron start
CMD [ "cron", "-f" ]
-f
Stay in foreground mode, don't daemonize.
因此,它将使您的容器保持运行状态。
/etc/init.d/cron status
但是您将无法使用FROM r-base:3.6.0
RUN apt-get update && apt-get -y install cron
RUN apt-get install procps -y
CMD ["cron" ,"-f"]
看到cron。在下面的dokcerfile中使用。
docker exec -it <your_container_id> bash -c "ps -aux"
然后运行
{{1}}
您将看到cron正在运行。