作为IT工程师,查看Docker容器内存占用有以下几种常用方法:
docker stats [容器ID或名称]
这会显示所有运行中容器的实时资源使用情况,包括: - 内存使用量(MEM USAGE) - 内存限制(MEM LIMIT) - 内存使用百分比(MEM %) - CPU使用率等
docker inspect --format='{{.Id}} {{.Name}} {{.HostConfig.Memory}} {{.State.Pid}}' $(docker ps -q)
或者获取更详细的内存信息:
docker inspect <容器ID> | grep -i memory
通过容器PID查看:
# 获取容器PID
docker inspect -f '{{.State.Pid}}' <容器ID>
# 然后使用top/htop查看
top -p <PID>
# 或者使用ps
ps -p <PID> -o %mem,rss
cat /sys/fs/cgroup/memory/docker/<容器ID>/memory.usage_in_bytes
cat /sys/fs/cgroup/memory/docker/<容器ID>/memory.stat
docker top <容器ID>
如果发现内存占用异常:
1. 检查应用是否有内存泄漏
2. 调整容器内存限制:docker update --memory <限制> <容器ID>
3. 使用docker exec
进入容器检查进程内存使用
4. 考虑使用--memory-swap
参数调整交换空间
需要更详细的分析时,可以使用jmap
或heapdump
等工具对Java应用进行堆分析。