快速掌握Docker容器查看命令
Docker作为容器化技术的领导者,已经成为现代软件开发和运维不可或缺的工具。掌握如何有效地查看和理解Docker容器的状态是高效管理和故障排除的关键。本文将带您快速掌握一系列核心的Docker容器查看命令,让您对容器世界了如指掌。
1. docker ps:列出运行中的容器
这是最常用也最基础的命令,用于显示当前正在运行的Docker容器。
基本用法:
bash
docker ps
输出示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 80/tcp my-nginx
关键字段解释:
* CONTAINER ID: 容器的唯一短ID。
* IMAGE: 容器所基于的镜像。
* COMMAND: 容器启动时执行的命令。
* CREATED: 容器创建时间。
* STATUS: 容器的运行状态(如 Up 表示运行中,Exited 表示已停止)。
* PORTS: 端口映射信息。
* NAMES: 容器的名称(可以自定义,否则Docker会自动分配一个)。
常用选项:
* -a 或 --all: 显示所有容器,包括运行中和已停止的。
bash
docker ps -a
* -s 或 --size: 显示容器的文件大小。
bash
docker ps -s
* -q 或 --quiet: 仅显示容器ID。这在需要脚本处理容器ID时非常有用。
bash
docker ps -q
* --filter "status=exited": 根据状态过滤容器。你可以根据ID、名称、状态等多种属性进行过滤。
bash
docker ps --filter "status=exited"
docker ps --filter "name=my-app"
2. docker inspect:获取容器的详细信息
当 docker ps 提供的概要信息不足以满足需求时,docker inspect 命令能提供容器所有细节,包括网络配置、挂载卷、环境变量等,以JSON格式输出。
基本用法:
bash
docker inspect [容器ID或容器名称]
示例:
bash
docker inspect my-nginx
或者
bash
docker inspect a1b2c3d4e5f6
输出: 大量的JSON数据,包含:
* Id: 完整的容器ID。
* State: 容器的当前状态(Running, Paused, Restarting等)。
* Config: 容器的配置信息(镜像、CMD、Entrypoint等)。
* NetworkSettings: 网络配置,包括IP地址、端口映射等。
* Mounts: 挂载的卷信息。
* LogPath: 日志文件路径。
技巧: 由于输出内容很多,通常会结合 grep 或 jq 工具来筛选特定信息。
* 查看容器的IP地址:
bash
docker inspect -f '{{.NetworkSettings.IPAddress}}' my-nginx
* 查看容器挂载的卷:
bash
docker inspect -f '{{json .Mounts}}' my-nginx | jq .
3. docker logs:查看容器日志
容器的日志是诊断问题和理解应用行为的关键。docker logs 命令允许您查看容器的标准输出和标准错误流。
基本用法:
bash
docker logs [容器ID或容器名称]
示例:
bash
docker logs my-nginx
常用选项:
* -f 或 --follow: 实时跟踪容器日志输出(类似 tail -f)。
bash
docker logs -f my-nginx
* --tail [数量]: 显示日志的最后N行。
bash
docker logs --tail 100 my-nginx
* -t 或 --timestamps: 显示带时间戳的日志。
bash
docker logs -t my-nginx
* --since [时间]: 显示从指定时间点之后的日志。
bash
docker logs --since "2023-01-01T00:00:00" my-nginx
或相对时间:
bash
docker logs --since "10m" my-nginx # 过去10分钟的日志
4. docker stats:实时监控容器资源使用
docker stats 提供了一个实时更新的表格,显示运行中容器的CPU、内存、网络I/O和磁盘I/O使用情况。
基本用法:
bash
docker stats
输出示例:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
a1b2c3d4e5f6 my-nginx 0.00% 1.531MiB / 1.952GiB 0.08% 586B / 0B 0B / 0B 2
关键字段解释:
* CPU %: 容器CPU使用率。
* MEM USAGE / LIMIT: 容器当前内存使用量及其限制。
* MEM %: 容器内存使用率。
* NET I/O: 网络输入/输出。
* BLOCK I/O: 块设备(磁盘)输入/输出。
* PIDS: 容器内运行的进程数量。
常用选项:
* --no-stream: 仅显示一次统计信息,而不是实时更新。
bash
docker stats --no-stream
* 指定一个或多个容器ID/名称,只显示这些容器的统计信息。
bash
docker stats my-nginx my-app-db
5. docker top:查看容器内运行的进程
类似于Linux系统的 top 命令,docker top 可以显示指定容器内部正在运行的进程。
基本用法:
bash
docker top [容器ID或容器名称]
示例:
bash
docker top my-nginx
输出示例:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 12:00 ? 00:00:00 nginx: master process nginx -g daemon off;
nginx 6 1 0 12:00 ? 00:00:00 nginx: worker process
关键字段解释:
* PID: 容器内部的进程ID。
* CMD: 进程执行的命令。
* 其他字段与Linux ps 命令类似。
这个命令对于调试容器内应用程序行为,确认进程是否按预期启动非常有用。
总结
快速掌握上述Docker容器查看命令,将极大地提升您管理和维护容器化应用的效率。从简单的运行状态概览 (docker ps),到深入的配置细节 (docker inspect),再到实时的资源监控 (docker stats) 和内部进程检查 (docker top),这些工具构成了您理解和控制Docker容器的基础。多加练习,您将很快成为Docker容器管理的高手。