如何查询Docker中所有已执行容器的历史运行记录?
查询Docker全量容器及对应完整历史记录的实现方案
完全可以通过Docker原生命令行工具实现需求,不需要依赖第三方插件,具体操作如下:
一、查询全状态容器列表
覆盖运行中、已停止、曾运行过的容器,分两种场景处理:
- 未被永久删除的容器(即未执行
docker rm、docker container prune等删除操作的实例)
直接执行以下命令即可列出所有容器,不受运行状态限制:
返回结果包含容器ID、关联镜像、启动命令、创建时间、当前状态、端口映射、自定义容器名等基础信息。docker ps -a - 已被删除的历史运行容器
只要Docker守护进程的事件日志未被手动清理,就可以通过事件命令拉取自Docker服务启动以来所有容器的全生命周期记录,包含已经被删除的实例:
输出会按时间顺序展示每个容器的创建、启动、停止、删除、配置变更等节点信息。docker events --filter 'type=container' --since '0'
二、获取容器对应的完整历史记录
根据你需要的记录类型选择对应命令即可:
- 容器运行日志(容器内进程的标准输出、标准错误记录)
只要容器未被删除时未携带-v参数强制清理关联数据、也没有手动删除Docker数据目录下的日志文件,无论容器处于运行还是停止状态,都可以用以下命令拉取完整日志:
如需展示日志时间戳、后续实时追加日志输出,可以添加参数:docker logs <容器ID或容器名称>docker logs -f -t <容器ID或容器名称>
注意:如果容器已经被彻底删除,且没有提前备份日志文件,这部分运行日志无法通过Docker原生命令找回 - 容器关联镜像的构建历史
如果你需要查询容器所用镜像的分层构建记录(即镜像每一层执行的命令、生成时间、大小等信息),只要本地对应镜像未被删除,无论容器是否存在都可以执行:docker history <镜像ID或镜像名:标签> - 指定容器的全生命周期事件流
如果需要追溯某一个容器从创建到销毁过程中触发的所有操作事件(包括启停、重启、网络挂载、卷挂载、配置修改、退出等),可以按容器ID过滤事件记录:docker events --filter 'container=<容器ID>' --since '0'
提示:如果之前执行过
docker system prune -a这类全量清理命令,被清理的容器关联日志、本地事件记录如果没有提前做外部备份,无法通过原生方式恢复查询。
内容的提问来源于stack exchange,提问作者Zemmouri Tarek
相关产品推荐
相关产品推荐

