Docker:在容器中运行的spigot控制台上执行命令

时间:2020-04-28 13:59:39

标签: shell docker command-line stdin minecraft

总结一下我遇到的问题: 我想在容器中运行的Minecraft控制台上执行命令,就像我以交互方式附加到容器时一样,但不需要附加到容器中。

= delete

setFixedLengthStreamingMode

docker attach container_name

就像运行docker exec一样,但是它像在docker attach中一样,将命令放入正在容器内部运行的程序的stdin中。

我只是搜索执行相同操作的oneliner。就像这个question

编辑: command

给出错误:

detach_from_contaienr

Edit2: 在this post

中删除容器链接上的-t标志之后

echo 'say test' | docker attach <container id>

该命令随着日志显示而到达服务器,但执行后由于命令无法以某种方式停止,因此我陷入了空白输入

如果我现在执行double ctrl + c,则容器停止...

Edit3: 我尝试在docker主机上执行这些命令,然后在运行中的spigot minecraft服务器中执行命令

1 个答案:

答案 0 :(得分:-1)

显然,您可以使用命名管道来执行此操作,如下所示:https://stackoverflow.com/a/26765590/2926055

# in the Docker container
$ mkfifo myfifo
$ java -jar minecraft_server.jar nogui < myfifo

# via your `docker exec`
$ echo 'say test' > myfifo

如前所述,请注意不要意外发送EOF字符。