Docker Cron定时任务启动失败报错unknown flag: --rm 排查求助
问题原因
- 命令存在重复调用问题:你在定时任务中写的
$(command -v docker) docker run ...执行时会展开为类似/usr/bin/docker docker run ...的结构,等于把第二个docker当成了docker命令的子命令传入,而--rm是run子命令的专属参数,docker顶层参数本身不存在--rm,因此触发参数不识别报错。你手动执行时没有额外加前面的$(command -v docker)段,直接执行docker run自然可以正常运行。 - 多余的交互参数:
-it是分配伪终端、开启交互输入的参数,cron运行环境没有对应的交互终端,就算修复第一个问题,保留该参数也会导致执行失败。
解决方案
直接修改定时任务中的命令,删除重复的docker字段和-it参数即可,修改后命令如下:
* * * * * $(command -v docker) run --rm --env-file=/home/ubuntu/.env ghcr.io/sebastix/crypto-dca:latest buy 10 ADA
你也可以先执行which docker拿到docker二进制的绝对路径(默认是/usr/bin/docker),直接写绝对路径避免环境变量问题:
* * * * * /usr/bin/docker run --rm --env-file=/home/ubuntu/.env ghcr.io/sebastix/crypto-dca:latest buy 10 ADA
如果使用的是root用户的定时任务(sudo crontab -e),确认root有权限拉取/访问对应镜像即可;如果使用普通用户的定时任务,确保普通用户已经加入docker用户组,无需sudo即可执行docker命令。
内容的提问来源于stack exchange,提问作者Nebucadnezzar
相关产品推荐
相关产品推荐

