如何在主机上使用 cron 在容器外运行 docker 命令?

时间:2021-03-25 19:11:51

标签: docker cron

我需要使用 docker ps 自动验证活动容器,并使用 docker pull 发送容器更新。所以我创建了这个脚本文件:

if docker ps | grep "fairplay";then
  echo "doker fairplay ok" >> /home/ubuntu/at2.log
else
  echo "doker fairplay caido" >> /home/ubuntu/at2.log
  errdock=1
fi

当我在终端上手动使用时,该脚本可以正常工作,但是当我尝试使用 cron 时却不起作用。

Crontab:

* * * * *   root    sh /home/ubuntu/at2.sh 

手动运行时的日志:

Thu Mar 25 13:33:43 -03 2021
doker fairplay ok
doker widevine ok
Thu Mar 25 13:33:44 -03 2021

我使用 cron 运行时的日志:

Thu Mar 25 13:34:01 -03 2021
doker fairplay caido
doker widevine caido
Thu Mar 25 13:34:01 -03 2021

我不想在容器内运行任何东西,我需要在主机上的cron中运行命令,所以下面的问题对question 1question 2没有帮助。

1 个答案:

答案 0 :(得分:1)

您的 crontab 语法不正确。我已经尝试了您的确切 .sh 文件,但没有发现任何错误。

这是正确的:

* * * * *   sh /home/ubuntu/at2.sh 

我不确定您为什么在 crontab 语法中添加 root 用户或单词,就像运行 root sh /home/ubuntu/at2.sh 一样,您将得到 Command 'root' not found

我还建议您添加 date 变量,以便您知道它的上升或下降时间:

if docker ps | grep "fairplay";then
then
  echo "`date +"%D %H:%M:%S"` docker fairplay ok" >> /home/ubuntu/at2.log
else
  echo "`date +"%D %H:%M:%S"` docker fairplay caido" >> /home/ubuntu/at2.log
  errdock=1
fi