总结一下我的问题:我想在容器中运行的minecraft控制台上执行一个命令,就像我在交互模式下附加到它时一样,但不需要附加到它。
docker attach container_name
command
detach_from_contaienr
就像运行docker exec,但它把命令放到容器内运行的程序的stdin中,就像docker attach一样。
我只是简单地搜索一个oneliner,做同样的事情。就像这个 疑问
编辑。echo 'say test' | docker attach <container id>
给出错误。
the input device is not a TTY
Edit2:删除容器上的-t标志后,林克在这里。此职位
echo 'say test' | docker attach <container id>
命令进入服务器,如日志所示,但在执行后,我卡在一个空白的输入,因为命令没有停止,不知何故。
如果我现在做双ctrl+c,容器就会停止......
编辑3:我尝试在docker主机上执行这些命令,并在正在运行的spigot minecraft服务器上执行该命令。
很显然,你可以使用一个命名的管道来实现这个目标,如这里所示。https:/stackoverflow.coma267655902926055
# in the Docker container
$ mkfifo myfifo
$ java -jar minecraft_server.jar nogui < myfifo
# via your `docker exec`
$ echo 'say test' > myfifo
如前所述,注意不要不小心发送了一个EOF字符。