【问题标题】:run "docker run" from crontab从 crontab 运行“docker run”
【发布时间】:2015-10-24 07:26:39
【问题描述】:

我尝试从在 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 执行(我尝试 * * * * * 进行调试)。

我不知道如何让 cron 和脚本一起工作。到目前为止,我尝试过:

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

$CONTAINER 在从 cron 运行时包含正确的 docker id,cron.log 和 output.log 已创建但为空。

有什么想法吗?

【问题讨论】:

    标签: cron docker


    【解决方案1】:

    从 cron 运行时无法使用 docker run -it --link [...] - 我现在使用 docker run --link [...]

    【讨论】:

      【解决方案2】:

      为了详细说明Martin的回答,-it-i -t的简写,即在终端(伪TTY)交互式运行,因此不需要运行一个定时任务。

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

      【讨论】:

        猜你喜欢
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-25
        • 1970-01-01
        • 2020-02-23
        • 2018-09-05
        相关资源
        最近更新 更多