运行 "docker run" 来自 crontab

run "docker run" from crontab

我尝试在 docker 容器内从 postgresql 数据库 运行 进行自动(每晚 4 点)备份。

#!/bin/sh

CONTAINER=`docker ps|grep name_of_container|awk '{print }'`
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 执行(我尝试 * * * * * 进行调试)。

我不知道如何让 cron 和脚本协同工作。到目前为止我试过:

$CONTAINER 包含正确的 docker id,当 运行 来自 cron 时,cron.log 和 output.log 被创建但为空。

有什么想法吗?

当来自 cron 的 运行 时无法使用 docker run -it --link [...] - 我现在使用 docker run --link [...]

为了详细说明 Martin 的回答,-it-i -t 的 shorthand,即 运行 交互式 [=17] =]终端(伪 TTY),因此在 cronjob 中 运行ning 没有必要。

如果该命令适合自动化,-it 应该不是必需的,因此删除它应该可以让您从 cron 作业中 运行 docker。