社区电脑网络 → 浏览:帖子主题
* 帖子主题:docker 查看日志的方式
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 1 楼 ] 回复
docker 查看日志的几个方式:

(1)docker logs --tail=1000 容器名称 (查看容器前多少行的日志)(推荐)

(2)docker 容器启动后,可以进入以下位置查看日志(/var/lib/docker/containers/容器ID/容器ID-json.log)(进入容器内部查看日志)

(3)#查看 compose 所有容器的运行日志

docker-compose -f docker-compose-app.yml logs -f

(4)#查看 compose 下某个容器的运行日志

docker-compose -f docker-compose-app. yml logs -f<服务名>

(5)# 也可以把 compose 的容器日志输出到日志文件里去,然后用 tail -f 随时查看

docker-compose -f docker-compose-app. yml logs -f >> myDockerCompose.log &

2022-11-22 11:44:06 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 2 楼 ] 回复
docker 命令 查看启动进程及日志

查看正在运行的docker容器有哪些:
docker ps

查看所有docker容器,包括不在running状态的:
docker ps -a

查看具体某一个容器的日志:
docker logs 参数 容器id

其中参数可选择的有:

-f follow 表示实时显示日志

-t timestamp 表示显示时间戳

--tail=n 或 --tail n 表示显示末尾n行

例如:docker logs -f --tail=200 xxxx,表示实时加载日志信息,并且仅显示最后200行。

查找日志文件中含有特定字符串的行:
docker logs 参数 容器id | grep str

查找日志文件中含有特定字符串的行,并且输出到指定文件out.txt中:
docker logs 参数 容器id | grep str >> out.txt

根据时间查看log:
docker logs --since 2020-04-10T19:50:00 container
docker logs --since 2020-04-10T19:30:00 --until 2020-04-10T20:05:00 contailer

--since 从指定时间点到最新的日志

--until 指定结束时间点
2022-11-22 11:57:17 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 3 楼 ] 回复
Docker logs 命令——查看docker容器日志

用法:

docker logs [OPTIONS] CONTAINER

名称,简写    默认    描述
--details        显示更多的信息
--follow , -f        跟踪日志输出
--since        显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail , -n    all    从日志末尾显示的行数,默认为all
--timestamps , -t        显示时间戳
--until        显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

例子:

查看指定时间后的日志,只显示最后100行:

docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

查看最近30分钟的日志:

docker logs --since 30m CONTAINER_ID

查看某时间之后的日志:

docker logs -t --since="2021-08-18T11:46:37" CONTAINER_ID

查看某时间之后最新的100条日志:

docker logs -t --since="2021-08-18T11:46:37" --tail=100 CONTAINER_ID

查看某时间段日志:

docker logs -t --since="2021-08-18T11:46:37" --until "2021-08-18T11:47:37" CONTAINER_ID

使用 grep 过滤日志-1:

docker logs CONTAINER_ID | grep 'error'

使用 grep 过滤日志-2:

    docker logs CONTAINER_ID | grep -10 'error'  # 打印匹配行的前后10行
    docker logs CONTAINER_ID | grep -C 10 'error'  # 打印匹配行的前后10行
    docker logs CONTAINER_ID | grep -A 10 -B 10 'error'  # 打印匹配行的前后10行
    docker logs CONTAINER_ID | grep -A 10 'error'  # 打印匹配行的后10行
    docker logs CONTAINER_ID | grep -B 10 'error'  # 打印匹配行的前10行

把日志写入文件:

docker logs -t CONTAINER_ID | grep 'error' >> logs_error.txt
2022-11-22 13:57:01 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 4 楼 ] 回复
docker port ID

netstat -ntlp
2022-11-22 16:15:44 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 5 楼 ] 回复
docker经常出问题,无故启动失败,只能靠log查找问题。下面就是几个常用的 log 操作技巧:

1. 显示所有 log

    # 显示某个容器的所有log
    $ docker logs [OPTIONS] <CONTAINER>

    # 显示 docker-compose 启动的所有容器的log
    $ docker-compose logs

2. 显示实时 log

    效果和Linux的 tail-f filename 一样,可以把最新内容刷新显示到屏幕上。

    $ docker logs -f <CONTAINER>

3. 使用 tail 查看 log 尾部

    效果和Linux的 tail-n20filename 一样,显示最后20行的内容。

    $ docker logs –tail 20 <CONTAINER>

4. 使用 grep 过滤 log

    例如查找所有包含 “error” 的log:

    $ docker logs | grep error

5. 根据时间查看 log

    比如只想查看某个时间点之后的日志,使用 –since 选项,显示从指定时间点到最新的日志:

    $ docker logs –since 2018-09-25T12:01:46.452616Z <CONTAINER>
    –since指定了开始时间点,还可以指定结束时间点,使用选项 –until,显示二者之间的日志:

    $ docker logs –since 2018-09-25T12:01:48.551341Z –until 2018-09-25T12:01:48.561714Z <CONTAINER>

6. 组合使用

    这些选项都可以放在一起使用,例如:

    $ docker logs –tail 10 <CONTAINER> | grep info
    $ docker logs -f –since xxx –tail=10 <CONTAINER>

7. 把日志写入文件

    把 error 日志都写到指定文件:

    $ docker logs -t <CONTAINER> | grep error >> logs_error.txt
2022-11-23 10:34:02 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 6 楼 ] 回复
docker部署并启动了  springboot服务,容器启动正常,docker exec 也可以正常进入容器内部,但是docker logs 控制台并没有日志打印出来。

同样的,/var/lib/docker/containers目录下的对应容器目录中,也没有对应的 *-json.log日志文件生成。

原因:

docker容器日志输出到控制台发生阻塞

解决方法:

将docker版本升级至18.06以上!!

docker版本查看命令:

1.docker --version

2, docker info
2022-11-23 10:34:31 IP:已设置保密
pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 7 楼 ] 回复
查看指定时间后的日志,只显示最后100行:
docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

查看最近30分钟的日志:
docker logs --since 30m CONTAINER_ID

查看某时间之后的日志:
docker logs -t --since="2018-02-08" CONTAINER_ID
2022-11-23 14:40:47 IP:已设置保密
分页: 1, 共 1 页
快速回复主题
账号/密码
用户: 没有注册?密码:
评论内容