docker bash 脚本中的日志不起作用

docker logs within a bash script doesn't work

我正在 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 
     docker logs localtunnel
}

在第一个函数 logs-are-showed 命令 docker logs returns me the logs容器 mybash

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

为什么会这样?

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