为什么 swarm 上的“docker run”不会显示命令的输出?

为什么 swarm 上的“docker run”不会显示命令的输出?

我已经成功设置了一个由一个主服务器和两个节点组成的 Docker Swarm 集群。

一切都按预期进行,只有一件事与文档有所不同。根据文档(寻找“在 Swarm 上运行容器”)当我在 Swarm 上运行某些东西时,我应该看到命令的输出,但这并不是发生在我身上的情况:

$ docker run hello-world   # <<< no output

$ docker ps -a
CONTAINER ID        IMAGE                COMMAND                CREATED             STATUS                     PORTS               NAMES
663f36f72ee1        hello-world:latest   "/hello"               4 seconds ago       Exited (0) 3 seconds ago                       node-1/serene_pare
...

$ docker logs 663f36f72ee1 # <<< however everything looks good
Hello from Docker.
This message shows that your installation appears to be working correctly.
...

我究竟做错了什么?

更新:使用run -i解决了问题。不过,我很好奇为什么-i只对 Swarm 才需要,以及为什么文档没有这么说。

答案1

文档有误,这个问题修复文档。

需要 -i --interactive 标志的原因是,由于容器位于另一台主机上,-i 标志允许我们通过抓取容器的标准输入 (STDIN) 来建立交互式连接。

相关内容