Ubuntu 16.04 Cron运行Docker容器

时间:2018-03-20 16:41:45

标签: azure docker cron ubuntu-16.04

我有一个运行Ubuntu 16.04的虚拟机,我想在其上运行cron-scheduled Docker容器。我已经配置了Docker主机和我的映像存储库,以便VM可以访问它们,并且映像在计算机上运行正常。

我的问题是,当我在/var/spool/cron中使用crontab -e创建cron-schedule时,容器不显示。我应该能够使用$ docker ps -a查看任何已停止的容器,但它不会显示它们。运行sudo grep CRON -i /var/log/syslog会显示输出:

Mar 20 16:22:01 SpacyVM CRON[121879]: (bdsadmin) CMD (docker run -d 
bdsdev.azurecr.io/crawler-public)
Mar 20 16:22:05 SpacyVM CRON[121878]: (CRON) info (No MTA installed, 
discarding output)
Mar 20 16:24:01 SpacyVM CRON[124254]: (bdsadmin) CMD (docker run -d 
bdsdev.azurecr.io/crawler-public)
Mar 20 16:24:02 SpacyVM CRON[124253]: (CRON) info (No MTA installed, 
discarding output)

现在,根据调度目的,每2分钟运行一次,但docker ps -a没有显示任何内容,即使容器已经退出,因此在我使用docker rm $(docker ps -aq)之前应该处于空闲状态。有没有人见过这个问题?

这是我在crontab中配置的作业:

*/2 * * * * docker run -d bdsdev.azurecr.io/crawler-public

注意:我没有为要输出的cronjobs创建邮件设置,因此No MTA...错误,我在Ubuntu VM中运行它,而不是在Ubuntu docker基础映像上运行。

1 个答案:

答案 0 :(得分:1)

发现我的问题。当我最初使用grep进行故障排除时,我的搜索忽略了一个相当重要的日志流。所以通过使用vim来查看/var/log/syslog

Mar 20 06:34:01 SpacyVM dockerd[1469]: time="2018-03-20T06:34:01.634861659Z" level=info msg="Attempting next endpoint for pull after error: manifest unknown: manifest unknown"

我的crontab文件中出现了拼写错误,因此docker守护程序无法找到该图像,从而导致出现此问题。

将其描述为业余时间