【发布时间】: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