查看Docker停止容器占用的内存的实现方法小结

 更新时间:2024年11月14日 10:58:35   作者:MetaverseMan  
要查看 Docker 停止的容器占用的内存,可以通过以下几种方法来实现,Docker 提供了一些命令和工具来帮助你管理和监控容器的资源使用情况,需要的朋友可以参考下

方法一:使用 docker system df 命令

docker system df 命令可以显示 Docker 使用的磁盘空间,包括镜像、容器和数据卷的占用情况。

运行命令

docker system df

输出示例

TYPE                TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images              10        5         5.00GB    2.50GB (50%)
Containers          20        10        1.00GB    500MB (50%)
Local Volumes       5         3         500MB     200MB (40%)
Build Cache         0         0         0B        0B

方法二:使用 docker inspect 命令

docker inspect 命令可以查看容器的详细信息,包括其状态和资源使用情况。

获取所有停止的容器的 ID

docker ps -a -q --filter status=exited

查看某个停止的容器的详细信息

docker inspect <container_id>

解析输出

在输出的 JSON 中,查找 SizeRw 和 SizeRootFs 字段,这些字段分别表示容器的可写层大小和根文件系统的总大小。

方法三:使用 docker system prune 命令

虽然 docker system prune 命令主要用于清理未使用的资源,但它也可以帮助你了解哪些资源可以被回收。

运行命令

docker system prune

输出示例

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all build cache
Are you sure you want to continue? [y/N] y
Total reclaimed space: 2.50GB

方法四:使用 du 命令

你也可以直接在宿主机上使用 du 命令来查看 Docker 目录的磁盘使用情况。

查找 Docker 存储目录

默认情况下,Docker 存储目录位于 /var/lib/docker

运行 du 命令

sudo du -h --max-depth=1 /var/lib/docker

输出示例

4.0K    /var/lib/docker/containers
1.0G    /var/lib/docker/image
500M    /var/lib/docker/volumes
5.0G    /var/lib/docker

综合示例

假设你有一个停止的容器 ID 为 abc123,你可以按照以下步骤查看其占用的内存:

获取容器的详细信息

docker inspect abc123

解析输出

在输出的 JSON 中,查找 SizeRw 和 SizeRootFs 字段:

{
    "Id": "abc123",
    "Created": "2023-10-01T12:34:56.789Z",
    "Path": "/bin/bash",
    "Args": [],
    "State": {
        "Status": "exited",
        "Running": false,
        "Paused": false,
        "Restarting": false,
        "OOMKilled": false,
        "Dead": false,
        "Pid": 0,
        "ExitCode": 0,
        "Error": "",
        "StartedAt": "2023-10-01T12:34:56.789Z",
        "FinishedAt": "2023-10-01T12:35:00.789Z"
    },
    "Image": "sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "ResolvConfPath": "/var/lib/docker/containers/abc123/resolv.conf",
    "HostnamePath": "/var/lib/docker/containers/abc123/hostname",
    "HostsPath": "/var/lib/docker/containers/abc123/hosts",
    "LogPath": "/var/lib/docker/containers/abc123/abc123-json.log",
    "Name": "/my_container",
    "RestartCount": 0,
    "Driver": "overlay2",
    "Platform": "linux",
    "MountLabel": "",
    "ProcessLabel": "",
    "AppArmorProfile": "",
    "ExecIDs": null,
    "HostConfig": {
        "Binds": null,
        "ContainerIDFile": "",
        "LogConfig": {
            "Type": "json-file",
            "Config": {}
        },
        "NetworkMode": "default",
        "PortBindings": {},
        "RestartPolicy": {
            "Name": "no",
            "MaximumRetryCount": 0
        },
        "AutoRemove": false,
        "VolumeDriver": "",
        "VolumesFrom": null,
        "CapAdd": null,
        "CapDrop": null,
        "CgroupnsMode": "host",
        "Dns": [],
        "DnsOptions": [],
        "DnsSearch": [],
        "ExtraHosts": null,
        "GroupAdd": null,
        "IpcMode": "private",
        "Cgroup": "",
        "Links": null,
        "OomScoreAdj": 0,
        "PidMode": "",
        "Privileged": false,
        "PublishAllPorts": false,
        "ReadonlyRootfs": false,
        "SecurityOpt": null,
        "UTSMode": "",
        "UsernsMode": "",
        "ShmSize": 67108864,
        "Runtime": "runc",
        "ConsoleSize": [
            0,
            0
        ],
        "Isolation": "",
        "CpuShares": 0,
        "Memory": 0,
        "NanoCpus": 0,
        "CgroupParent": "",
        "BlkioWeight": 0,
        "BlkioWeightDevice": [],
        "BlkioDeviceReadBps": null,
        "BlkioDeviceWriteBps": null,
        "BlkioDeviceReadIOps": null,
        "BlkioDeviceWriteIOps": null,
        "CpuPeriod": 0,
        "CpuQuota": 0,
        "CpuRealtimePeriod": 0,
        "CpuRealtimeRuntime": 0,
        "CpusetCpus": "",
        "CpusetMems": "",
        "Devices": [],
        "DeviceCgroupRules": null,
        "DeviceRequests": null,
        "KernelMemory": 0,
        "KernelMemoryTCP": 0,
        "MemoryReservation": 0,
        "MemorySwap": 0,
        "MemorySwappiness": null,
        "OomKillDisable": false,
        "PidsLimit": null,
        "Ulimits": null,
        "CpuCount": 0,
        "CpuUsage": 0,
        "IOMaximumIOps": 0,
        "IOMaximumBandwidth": 0,
        "MaskedPaths": [
            "/proc/asound",
            "/proc/acpi",
            "/proc/kcore",
            "/proc/keys",
            "/proc/latency_stats",
            "..."
        ],
        "ReadonlyPaths": [
            "/proc/bus",
            "/proc/fs",
            "/proc/irq",
            "/proc/sys",
            "/proc/sysrq-trigger",
            "..."
        ]
    },
    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/fc1234567890abcdef1234567890abcdef/diff",
            "MergedDir": "/var/lib/docker/overlay2/abc123/merged",
            "UpperDir": "/var/lib/docker/overlay2/abc123/diff",
            "WorkDir": "/var/lib/docker/overlay2/abc123/work"
        },
        "Name": "overlay2"
    },
    "Mounts": [],
    "Config": {
        "Hostname": "abc123",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
        ],
        "Cmd": [
            "/bin/bash"
        ],
        "Image": "ubuntu:latest",
        "Volumes": null,
        "WorkingDir": "/",
        "Entrypoint": null,
        "OnBuild": null,
        "Labels": {}
    },
    "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "1234567890abcdef1234567890abcdef",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {},
        "SandboxKey": "/var/run/docker/netns/1234567890ab",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null,
        "EndpointID": "",
        "Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "",
        "IPPrefixLen": 0,
        "IPv6Gateway": "",
        "MacAddress": "",
        "Networks": {
            "bridge": {
                "IPAMConfig": null,
                "Links": null,
                "Aliases": null,
                "NetworkID": "1234567890abcdef1234567890abcdef",
                "EndpointID": "",
                "Gateway": "",
                "IPAddress": "",
                "IPPrefixLen": 0,
                "IPv6Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "MacAddress": "",
                "DriverOpts": null
            }
        }
    },
    "SizeRw": 10485760,  # 可写层大小(10 MB)
    "SizeRootFs": 209715200  # 根文件系统总大小(200 MB)
}

总结

通过上述方法,你可以详细了解停止的 Docker 容器占用的内存和其他资源。

到此这篇关于查看Docker停止容器占用的内存的实现方法小结的文章就介绍到这了,更多相关查看Docker停止容器占用内存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Docker network Create加--subnet后遇到问题

    解决Docker network Create加--subnet后遇到问题

    这篇文章主要介绍了解决Docker network Create加--subnet后遇到问题。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker load之后镜像名字为none问题解决方法

    Docker load之后镜像名字为none问题解决方法

    这篇文章主要介绍了Docker load之后镜像名字为none问题解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • docker 挂载、修改文件的步骤

    docker 挂载、修改文件的步骤

    这篇文章主要介绍了docker 挂载、修改文件的步骤,咱们使用的是docker的 copy 命令从容器中 copy 出来相关的配置文件,在本地修改,修改完毕在使用docker的 copy 命令从本地 copy 到容器中,重启容器生效的,需要的朋友可以参考下
    2023-03-03
  • Docker数据卷容器创建及使用方法解析

    Docker数据卷容器创建及使用方法解析

    这篇文章主要介绍了Docker数据卷容器创建及使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 理解Docker(2):Docker 镜像详细介绍

    理解Docker(2):Docker 镜像详细介绍

    这篇文章主要介绍了理解Docker(2):Docker 镜像详细介绍, 镜像(image)是动态的容器的静态表,有需要的可以了解下。
    2016-11-11
  • Docker images导出和导入操作

    Docker images导出和导入操作

    这篇文章主要介绍了Docker images导出和导入操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • win10安装docker及遇到的坑及解决

    win10安装docker及遇到的坑及解决

    这篇文章主要介绍了win10安装docker及遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Jenkins+Docker持续集成的实现

    Jenkins+Docker持续集成的实现

    Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。本文介绍了Jenkins Docker持续集成,分享给大家
    2021-05-05
  • docker ps容器未显示的问题以及排查过程详解

    docker ps容器未显示的问题以及排查过程详解

    这篇文章主要给大家介绍了关于docker ps容器未显示的问题以及排查过程的相关资料,相信各位在使用docker容器的时候,经常docker run -d后台运行后,使用docker ps的时候发现这个容器显示不到,这里给大家介绍下,需要的朋友可以参考下
    2023-09-09
  • linux和docker下mysql安装方式

    linux和docker下mysql安装方式

    本文详细介绍了在Linux系统中通过命令行安装MySQL的步骤,包括编辑yum源、下载并启动MySQL服务、登录和修改密码等操作,同时,文中也提供了在Docker环境下安装MySQL的流程,涵盖了拉取MySQL镜像、查看运行状态及登录MySQL的方法
    2024-09-09

最新评论