【问题标题】:docker logs within a bash script doesn't workbash 脚本中的 docker 日志不起作用
【发布时间】:2022-01-18 18:12:34
【问题描述】:

我正在 bash 脚本中试验 Docker 的一种奇怪行为。 让我们看看这两个例子:

logs-are-showed() {
     docker rm -f mybash &>/dev/null
     docker run -it --rm -d --name mybash bash -c "echo hello; tail -f /dev/null"
     docker logs mybash
}

# usage:
# $ localtunnel 8080
localtunnel() {
     docker rm -f localtunnel &>/dev/null
     docker run -it -d --network host --name localtunnel efrecon/localtunnel --port $1
     docker logs localtunnel
}

在第一个函数 logs-are-showed 中,命令 docker logs 返回容器的日志 mybash

在第二个函数 localtunnel 中,docker logs 命令没有返回任何内容。 调用 localtunnel 函数后,如果我从 脚本外部 请求容器日志,它会正确显示日志。

为什么会这样?

【问题讨论】:

  • doesn't return me anything 所以该容器中没有日志。 if I ask for the container logs from outside the script 如果您在一段时间后手动请求日志,那么就会有日志。在日志前添加sleep 20 - 有帮助吗?
  • 是的!你说得对!啊哈哈我很挣扎,但这很简单!谢谢!你想写出答案让我检查是否正确?

标签: linux bash docker containers


【解决方案1】:

流程需要时间做出反应。在启动进程后它们可能没有日志——它还没有写任何东西。稍等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2012-10-16
    • 2011-03-02
    • 2011-09-04
    相关资源
    最近更新 更多