在之前介绍linux命令free时,有提到过docker中使用free命令获得的常常是宿主机的内存使用情况。那么怎么获取docker中内存的使用情况呢?
docker 外部
如果可以从容器外部(宿主机)监视 Docker 容器的内存使用情况。使用docker stats
命令。
1 2 3
| $ docker stats CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS fc015f31d9d1 0.00% 220KiB / 3.858GiB 0.01% 1.3kB / 0B 0B / 0B 2
|
top
docker容器实现了进程隔离,那么我们可以通过top命令获取每个进程的内存使用,从而获取整个容器的内存使用。命令如下:
1
| top -bn 1 | awk '{ if (NR > 7) print }' |awk '{print $6}' |tr 'a-z' 'A-Z' | numfmt --from=auto |awk '{s+=$1} END {print s}' |numfmt --to=si
|
/sys/fs/cgroup/memory
进入容器的 /sys/fs/cgroup/memory 这个目录, 查看 memory.stat 文件内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| cache 2338160640 rss 7779282944 rss_huge 5068816384 mapped_file 346603520 swap 43261952 pgpgin 840197627 pgpgout 853111714 pgfault 9149670346 pgmajfault 375424 inactive_anon 399691776 active_anon 7556538368 inactive_file 1016688640 active_file 1144373248 unevictable 0 hierarchical_memory_limit 34359738368 hierarchical_memsw_limit 68719476736 total_cache 2338160640 total_rss 7779282944 total_rss_huge 5068816384 total_mapped_file 346603520 total_swap 43261952 total_pgpgin 840197627 total_pgpgout 853111714 total_pgfault 9149670346 total_pgmajfault 375424 total_inactive_anon 399691776 total_active_anon 7556538368 total_inactive_file 1016688640 total_active_file 1144373248 total_unevictable 0
|
参考