我有一个运行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基础映像上运行。
答案 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守护程序无法找到该图像,从而导致出现此问题。
将其描述为业余时间