Docker容器排错必知的8个命令详解

 更新时间:2026年04月09日 08:38:37   作者:用户545842986958  
本文介绍了8个实用的Docker排错命令,包括查看容器日志,检查容器详细信息和进入容器内部排查等,些命令涵盖了Docker排错的完整链路,可以帮助大家快速定位和解决问题

作为一名IT运维工程师,日常与Docker容器打交道是必修课。当容器出现故障时,快速定位问题是我们的核心能力。今天给大家分享8个最实用的Docker排错命令。

一、docker logs -f— 查看容器日志

docker logs命令介绍

用途:获取容器的标准输出(stdout)和标准错误(stderr)日志,是定位应用层面问题的核心命令。

常用选项

选项说明
-f, --follow实时跟踪日志输出
--tail N只显示最后N行
--since显示指定时间后的日志,如--since 10m
-t, --timestamps显示时间戳

具体示例:

排错第一步永远是看日志。docker logs 可以查看容器的标准输出和标准错误:

# 查看最近100行日志
docker logs --tail 100 my-container

# 实时追踪日志变化
docker logs -f my-container

# 查看指定时间段的日志
docker logs --since 2024-01-01T00:00:00 my-container

典型问题:当容器启动立即退出时,先用docker logs查看错误输出(如配置文件语法错误、端口冲突、依赖服务不可达等)。

二、docker inspect— 检查容器详细信息

docker inspect命令介绍

用途:以JSON格式输出容器或镜像的详细配置信息,包括网络设置、挂载卷、环境变量、启动命令、状态等。

常用选项

选项说明
-f, --format使用Go模板过滤指定字段

具体示例:

docker inspect 返回容器的完整配置和状态信息,包括网络、挂载、环境变量等:

# 查看容器完整信息
docker inspect my-container

# 只看容器IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-container

# 查看容器挂载卷
docker inspect -f '{{json .Mounts}}' my-container | python3 -m json.tool

典型问题

  • 容器网络不通?用inspect查看NetworkSettings下的IP、端口映射、网桥模式。
  • 容器挂载卷不生效?查看Mounts字段确认源路径和目标路径是否正确。
  • 容器为什么重启?查看State字段中的ExitCodeError信息。

三、docker exec -it— 进入容器内部排查

docker exec命令介绍

用途:在正在运行的容器内部执行命令,相当于SSH进入容器,用于交互式排查。

常用选项

选项说明
-it分配交互式终端(常用组合)
-d后台执行命令
-e设置环境变量

具体示例:

直接进入容器内部,查看文件系统、运行进程、配置文件:

# 进入容器bash
docker exec -it my-container /bin/bash

# 在容器内执行命令
docker exec my-container cat /etc/config/app.conf

# 查看容器内进程
docker exec my-container ps aux

典型排查动作

  • 检查进程:ps auxtop
  • 查看端口监听:netstat -tlnpss -tlnp
  • 测试网络连通性:curl localhost:8080ping 8.8.8.8
  • 查看配置文件:cat /app/config.yml
  • 检查环境变量:env

注意:容器需要包含shell(如bash、sh)才能交互式进入,否则只能执行单条命令。

四、docker top— 查看容器内运行的进程

docker top命令介绍

用途:显示容器内运行的进程列表(类似Linux的top命令),帮助定位进程级问题。

常用选项:无特殊选项,支持ps命令的参数(如aux)。

具体示例:

快速确认容器内服务是否正常启动:

docker top my-container

典型问题

  • 容器内某个子进程僵死:通过docker top找到PID,再用docker exec进入后kill
  • 恶意进程或意外启动的额外进程:通过进程列表发现异常。

五、docker stats— 实时监控资源占用

docker stats命令介绍

用途:实时显示容器的CPU、内存、网络IO和磁盘IO使用情况,用于性能瓶颈排查。

常用选项

选项说明
--no-stream只输出一次当前状态
--format自定义输出格式

具体示例:

实时查看容器的CPU、内存、网络使用情况:

# 监控所有容器
docker stats

# 监控指定容器
docker stats my-container

典型问题

  • 容器CPU持续100%:可能存在死循环或计算密集任务。
  • 内存不断增长:可能存在内存泄漏,需结合docker exec进入容器用topfree进一步分析。
  • 网络IO异常高:检查是否有异常流量或日志刷屏。

六、docker events— 查看Docker事件流

docker events命令介绍

用途:实时输出Docker守护进程产生的事件流,如容器创建、启动、停止、销毁、健康检查失败等。

常用选项

选项说明
--filter按类型、标签、时间等过滤
--since / --until指定时间范围

具体示例:

实时跟踪Docker守护进程的事件,适合排查容器重启、网络变化等问题:

docker events

典型问题

  • 容器频繁重启:查看事件流中是否有diestart反复出现。
  • 健康检查失败:通过事件看到health_status: unhealthy,再配合docker inspect查看健康检查配置。

七、docker system df— 检查磁盘空间占用

磁盘满了?看看是谁占了空间:

docker system df

# 查看详情
docker system df -v

八、docker diff— 查看容器文件系统变更

查看容器启动后文件系统的变化,排查配置丢失或异常修改:

docker diff my-container

总结

这8个命令涵盖了Docker排错的完整链路:

命令用途优先级
docker logs看日志,定位错误原因⭐⭐⭐
docker inspect查配置,确认网络/挂载⭐⭐⭐
docker exec进容器,深入排查⭐⭐
docker top看进程,确认服务状态⭐⭐
docker stats监控资源,排查性能⭐⭐
docker events跟踪事件流
docker system df查磁盘占用
docker diff查看文件变更

80%的容器问题都可以通过前3个命令定位到原因。建议收藏,遇到容器故障时拿出来照着排查。

到此这篇关于Docker容器排错必知的8个命令详解的文章就介绍到这了,更多相关Docker容器排错命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在vscode中使用ssh运行docker:从下载到运行全流程

    在vscode中使用ssh运行docker:从下载到运行全流程

    首先在本机或者服务器上下载docker并运行,本文目的旨在本机下载docker并打包,然后在服务器上进行加载,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-08-08
  • 详解Docker容器可视化监控中心搭建

    详解Docker容器可视化监控中心搭建

    本篇文章主要介绍了详解Docker容器可视化监控中心搭建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Docker彻底删除容器包含停止容器,删除镜像的方式

    Docker彻底删除容器包含停止容器,删除镜像的方式

    作者分享了在运行MinIO容器时遇到端口冲突的问题,通过停止、删除容器和镜像,成功释放了端口并成功运行了MinIO容器
    2025-03-03
  • 详解Docker容器数据卷

    详解Docker容器数据卷

    这篇文章主要介绍了Docker容器数据卷的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Docker镜像加载原理

    Docker镜像加载原理

    Docker镜像是Docker容器运行的基础,没有Docker镜像,就不可能有Docker容器,这也是Docker的设计原则之一 ,本文给大家介绍Docker镜像加载原理,感兴趣的朋友一起看看吧
    2021-06-06
  • Docker容器的程序连接宿主机的MySQL全过程

    Docker容器的程序连接宿主机的MySQL全过程

    这篇文章主要介绍了Docker容器的程序连接宿主机的MySQL全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • docker安装nginx并挂载目录的具体实现

    docker安装nginx并挂载目录的具体实现

    本文主要介绍了docker安装nginx并挂载目录的具体实现,包括拉取镜像、挂载目录、创建临时容器拷贝文件、删除临时容器、运行容器,感兴趣的可以了解一下
    2025-07-07
  • Docker安装MySQL8的方法步骤

    Docker安装MySQL8的方法步骤

    本篇文章主要介绍了Docker安装MySQL8的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • docker中的run/cmd/entrypoint的区别详解

    docker中的run/cmd/entrypoint的区别详解

    Dockerfile中run、cmd和entrypoint都能够用于执行命令,针对每个命令给他介绍详细用途,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-08-08
  • docker配置skywalking 监控springcloud应用的详细步骤

    docker配置skywalking 监控springcloud应用的详细步骤

    本文分步骤给大家讲解docker配置skywalking 监控springcloud应用的方法,感兴趣的朋友一起看看吧
    2025-04-04

最新评论