×

已解决:`docker run` 报错: `the input device is not a TTY`

Falcon 2025-01-25 views:
自动摘要

正在生成中……

今天发现,使用crontab运行docker run时报错: the input device is not a TTY

运行命令是这样的:

/usr/bin/docker run -it --rm -v "/opt/docker/Sites:/data" -v "/root:/root" ubuntu-ssh-rsync /data/rsyncFromProjectD.sh

解决方法是: 移除-t 参数

另一种方式是写一个脚本,根据条件判断是否存在伪终端决定是否加上-t参数:

DOCKER_RUN_OPTIONS="-i --rm"

# Only allocate tty if we detect one
if [ -t 0 ] && [ -t 1 ]; then
    DOCKER_RUN_OPTIONS="$DOCKER_RUN_OPTIONS -t"
fi

/usr/bin/docker run $DOCKER_RUN_OPTIONS -v "/opt/docker/Sites:/data" -v "/root:/root" ubuntu-ssh-rsync /data/rsyncFromProjectD.sh
本文收录于