从crontab运行“docker run”

我尝试从docker容器内运行的postgresql数据库中自动备份(每天晚上4次)。

#!/bin/sh CONTAINER=`docker ps|grep name_of_container|awk '{print $1}'` USER='postgre_user' PASSWORD='changed' BUDIR='/some/path/backup/' docker run -it --link $CONTAINER:db -v $BUDIR:/backup/ -e "PGPASSWORD=$PASSWORD" pg_dump -h db -U $USER -Fc -f /backup/$(date +%Y-%m-%d-%H-%M-%S).dump 

我的crontab看起来像这样:

 0 4 * * * /path/to/script.sh 

该脚本工作正常,当我手动执行它也得到执行从cron(我试过* * * * *为debugging)。

我无法弄清楚如何使cron和脚本一起工作。 到目前为止我尝试过:

  • 将variables写入日志文件
  • 检查crontab的输出( * * * * * [...] &>cron.log
  • 在脚本中检查docker exec [...] > output.log output docker exec [...] > output.log输出

当从cron运行时, $CONTAINER包含正确的docker id,cron.log和output.log被创build,但是是空的。

有任何想法吗?

从cron运行时不能使用docker run -it --link [...] – 我现在使用docker run --link [...]