docker 查看容器(建议收藏)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

在现代软件开发中,Docker 已经成为容器化技术的核心工具,它简化了应用程序的部署和运行环境管理。然而,随着容器数量的增加,如何高效地查看、管理和调试容器成为开发者必须掌握的技能。本文将围绕“docker 查看容器”这一核心主题,从基础命令到高级技巧,结合实际案例,帮助读者系统掌握容器状态的查看方法,并理解其背后的技术逻辑。

Docker 提供了简单直观的命令来查看当前运行的容器。最常用的命令是 docker ps,其功能类似于操作系统的进程列表。

docker ps

执行此命令后,会显示所有正在运行的容器信息,包括容器 ID、镜像名称、创建时间、端口映射和容器名称等。例如:

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                    NAMES  
abc123        nginx:latest   "nginx -g 'daemon of…"   2 hours ago      Up 2 hours      0.0.0.0:80->80/tcp       my-nginx  

关键参数解析

  • -a:显示所有容器(包括已停止的)。
  • --format:自定义输出格式,例如:
    docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"  
    

    这会以表格形式展示容器 ID、名称和状态。

比喻理解
可以将 docker ps 比作“停车场的监控摄像头”,它只记录当前正在运行的容器(即“停在场内的车辆”),而不会显示已停止的容器(“离开的车辆”)。


如果需要查看所有容器(无论是否运行),可以使用 docker ps -a 命令。例如:

docker ps -a  

输出结果将包含已停止的容器状态(如 Exited (0)),帮助开发者快速定位异常退出的容器。

常见场景
当开发过程中某个容器意外停止,通过 docker ps -a 可以快速找到其 ID,并进一步使用 docker logs 查看日志(后续章节会详细讲解)。


仅查看基础信息可能无法满足需求,开发者有时需要深入容器的配置细节。此时,docker inspect 命令就派上用场了。

docker inspect [容器 ID 或名称]  

例如:

docker inspect my-nginx  

该命令会返回容器的 JSON 格式详细信息,包括网络配置、挂载点、环境变量等。例如:

[
  {
    "Id": "abc123...",
    "Config": {
      "Hostname": "my-nginx",
      "Env": ["PATH=/usr/local/sbin:...", "NGINX_VERSION=1.21.3..."],
      "Image": "nginx:latest"
    },
    "NetworkSettings": {
      "Ports": {
        "80/tcp": [
          {
            "HostIp": "0.0.0.0",
            "HostPort": "80"
          }
        ]
      }
    }
  }
]

比喻理解
docker inspect 相当于“容器的身份证”,包含了所有与容器相关的配置细节,开发者可以通过它了解容器的“出生证明”和“运行规则”。


随着容器数量增加,手动筛选信息会变得低效。Docker 提供了 -f--filter 参数,支持按条件过滤容器列表。

常见过滤条件

  • 按状态过滤

    docker ps -f status=running  # 仅显示运行中的容器  
    docker ps -f status=exited   # 仅显示已停止的容器  
    
  • 按名称或镜像过滤

    docker ps -f name=web*       # 匹配名称以 web 开头的容器  
    docker ps -f ancestor=nginx  # 显示基于 nginx 镜像的容器  
    
  • 组合过滤条件

    docker ps -f status=exited -f ancestor=nginx  
    

比喻理解
这类似于在超市货架上按“价格区间”和“品牌”筛选商品,通过多个条件快速定位目标容器。


对于复杂场景,可以结合其他命令(如 grepawk)或编写脚本实现自动化操作。

案例 1:统计运行中的容器数量

docker ps --format "{{.Status}}" | grep -c "Up"  

案例 2:导出所有容器的 ID 列表

docker ps -a --format "{{.ID}}" > container_ids.txt  

案例 3:通过 Shell 脚本批量查看容器日志

#!/bin/bash  
containers=$(docker ps -q)  
for container in $containers; do  
  echo "日志信息:$container"  
  docker logs $container  
done  

假设开发者正在构建一个多服务应用,包含前端、后端和数据库三个容器。某天发现前端页面无法访问,需要排查问题。

步骤 1:查看所有容器状态

docker ps -a  

输出显示前端容器处于 Exited 状态,而其他容器正常。

步骤 2:获取前端容器的详细信息

docker inspect frontend-container  

发现其端口映射配置错误(如未暴露 3000 端口)。

步骤 3:检查容器日志

docker logs frontend-container  

日志显示启动脚本缺少依赖项。

通过以上步骤,开发者快速定位问题并修复了容器配置。


“docker 查看容器”是开发者日常工作中不可或缺的技能。从基础的 docker ps 到高级的 docker inspect,每条命令都像一把钥匙,帮助开发者打开容器的“黑箱”。通过结合过滤条件和组合命令,可以进一步提升排查问题的效率。建议读者通过实际操作练习这些命令,并尝试在项目中应用,逐步掌握容器管理的核心逻辑。记住,实践是掌握技术的最佳途径!

最新发布