我在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"]
谢谢!
答案 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>
启动应用后执行此操作