本文目录导读:

在Shell脚本中查看容器的标准输出,主要有以下几种方法:
使用 docker logs 命令
查看实时日志
#!/bin/bash # 查看容器实时标准输出 docker logs -f container_name # 或使用容器ID docker logs -f container_id
查看最近的N行
#!/bin/bash # 查看最后100行 docker logs --tail 100 container_name # 查看最后100行并持续跟踪 docker logs --tail 100 -f container_name
查看特定时间范围的日志
#!/bin/bash # 查看最近5分钟的日志 docker logs --since 5m container_name # 查看特定时间段的日志 docker logs --since "2024-01-01T00:00:00" --until "2024-01-02T00:00:00" container_name # 查看最新30秒的日志 docker logs --since 30s container_name
输出重定向到文件
#!/bin/bash # 将容器日志保存到文件 docker logs container_name > /var/log/container.log 2>&1 # 追加日志到文件 docker logs container_name >> /var/log/container.log 2>&1 # 将日志同时输出到文件和终端 docker logs container_name | tee -a /var/log/container.log
使用 docker attach 命令
#!/bin/bash # 连接到容器标准输出(注意:会阻塞脚本) docker attach container_name # 使用选项避免干扰容器运行 docker attach --no-stdin container_name
使用 docker exec 结合 cat 命令
#!/bin/bash # 查看容器内的日志文件 docker exec container_name cat /var/log/app.log # 实时查看容器内日志 docker exec -t container_name tail -f /var/log/app.log
完整的脚本示例
#!/bin/bash
CONTAINER_NAME="myapp"
LOG_FILE="/var/log/myapp.log"
# 检查容器是否运行
if ! docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
echo "错误: 容器 $CONTAINER_NAME 未运行"
exit 1
fi
# 查看容器日志并保存
echo "=== 容器标准输出 ==="
echo "时间: $(date)"
echo "-------------------"
# 方法1:直接查看实时日志
docker logs --tail 50 -f $CONTAINER_NAME &
# 方法2:保存到文件
docker logs $CONTAINER_NAME > $LOG_FILE 2>&1
echo "日志已保存到: $LOG_FILE"
# 方法3:带时间戳查看
docker logs --timestamps $CONTAINER_NAME
# 等待后台进程
wait
格式化输出
#!/bin/bash
# 格式化显示日志
docker logs --timestamps $CONTAINER_NAME | while read line; do
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $line"
done
# 仅显示特定关键词的日志
docker logs $CONTAINER_NAME | grep -i "error\|warning"
处理多个容器
#!/bin/bash
# 查看多个容器的日志
containers=("web-app" "api-service" "database")
for container in "${containers[@]}"; do
echo "=== $container 日志 ==="
docker logs --tail 20 $container 2>/dev/null || echo "容器不存在或未运行"
echo ""
done
注意事项
- 权限问题:确保脚本有足够的权限访问Docker socket
- 资源消耗:
-f模式会持续监听,注意资源占用 - 日志轮转:Docker默认开启日志轮转,避免日志文件过大
- 编码问题:确保终端编码与容器日志编码一致
选择哪种方法取决于具体需求:
- 实时监控:使用
docker logs -f - 调试问题:使用
--tail和--since - 日志归档:重定向到文件
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播