如何通过echo命令将消息发送到mac控制台? (适用于Mac的Docker)

时间:2017-06-17 10:54:52

标签: docker

我在Docker for Mac上使用节点服务器容器。 node.js服务器的消息显示在我的mac控制台上。

如何通过我的mac控制台上的容器内的bash脚本显示消息? 我也在运行shell脚本。我希望通过echo something

显示一些消息

我的docker-compose包括healthcheck,echo在healthcheck.sh中执行:

healthcheck: test: ["CMD", "bash", "-c", "/xxx/xxxx/healthcheck.sh"]

谢谢!

2 个答案:

答案 0 :(得分:1)

当你的echo在docker healthcheck中执行时,其输出不会发送到容器stdout。 Docker将healthcheck输出存储为容器元数据:

  

为了帮助调试失败的探测器,命令写入stdout或stderr的任何输出文本(UTF-8编码)都将存储在运行状况中,并且可以使用docker inspect进行查询。此类输出应保持较短(目前仅存储前4096个字节)。

https://docs.docker.com/engine/reference/builder/#healthcheck

所以你可以看到输出:

docker inspect <container-id>

看起来像是:

        "Health": {
            "Status": "unhealthy",
            "FailingStreak": 6,
            "Log": [
                {
                    "Start": "2017-06-17T19:39:33.001296235Z",
                    "End": "2017-06-17T19:39:33.059073965Z",
                    "ExitCode": 1,
                    "Output": "/bin/sh: 1: curl: not found\n"
                },

更具体一点:

docker inspect <container-id> -f '{{index .State.Health.Log 0}}'

答案 1 :(得分:0)

写入stdout和stderr(包括echo)的所有消息都存储在容器的日志中。

因此,您可以拖尾容器的日志并在消息发生时查看消息。

对于单个容器,您可以运行docker logs -f <container name>

对于docker-compose设置,请运行docker-compose logs -f <service name>

启动应用后执行此操作