如何在运行docker时传递crontab命令

时间:2018-01-06 13:21:10

标签: docker

我想通过docker run命令运行docker,并希望像bleow一样传递crontab命令。

crontab -l | '{ /bin/cat; /bin/echo "*/5 * * * * <some command>"; }' | crontab -

上面的命令将创建一个cronscript,它将在新创建的docker容器中每5分钟运行一次。

构建图像时我不需要提供此命令。 *安排作业时,将创建此泊坞窗。

3 个答案:

答案 0 :(得分:3)

docker run -it image /bin/bash -c "crontab -l | /bin/cat; /bin/echo \"*/5 * * * * <some command>\" |crontab - ; service cron restart"

答案 1 :(得分:2)

基于docs,您确实可以使用docker run指定命令。

  

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

这里需要注意的一点是,这将覆盖图像中烘焙的任何CMD指令,这可能是不合需要的。如果覆盖不是一个选项,那么你必须使用docker exec -it <CONTAINER_NAME> bash EXEC进入容器,并按照Abe的答案运行命令。

因此,如果您正在运行的图像“不”在Dockerfile中有CMD指令,您应该能够通过以下方式完成此操作:

docker run -it some/image /bin/bash -c "crontab -l | '{ /bin/cat; /bin/echo \"*/5 * * * * <some command>\" }' | crontab -"

答案 2 :(得分:0)

您可以访问容器的bash line命令并运行命令,如下所示:

docker exec -it <my container> /bin/bash

并且,您将获得对容器cli的访问权。