Linux检查Docker镜像,容器的磁盘空间

news/2024/11/23 9:39:24/

Linux检查Docker镜像,容器的磁盘空间

我从3A平台购买了云服务器,想知道 Docker 在你的 Linux 系统上到底占用了多少空间?

首先,所有Docker 镜像、容器和其他相关程序都位于/var/lib/docker. 你可以检查此目录的大小并获取 Docker 使用的总磁盘空间:

sudo du -sh /var/lib/docker
5G /var/lib/docker

怎么查看详细的占用情况呢?

检查 Docker 磁盘空间使用情况

了解镜像、容器、本地volumes占用了多少空间的基本的Docker方法:

docker system df

运行此命令获得按 Docker 组件分组的所有磁盘使用信息。

Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
TYPE           TOTAL       ACTIVE      SIZE        RECLAIMABLE
Images         1           0           146MB       146MB (100%)
Containers     0           0           0B          0B (0%)
Local Volumes  0           0           0B          0B (0%)

那怎么查看每个镜像磁盘空间的占用情况呢?可以使用下面的命令。

docker system df -v

检查 docker 镜像大小

查看 Docker 镜像及其大小:

docker image ls

它列出了系统上的所有 Docker 镜像,展示了一些详细信息,包括大小:

>  docker image ls
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
REPOSITORY               TAG         IMAGE ID      CREATED     SIZE
docker.io/library/nginx  latest      2b7d6430f78d  7 days ago  146 MB

检查正在运行的容器大小

想知道正在运行的 Docker 容器的大小,可以使用 docker ps 命令:

docker ps --size

查看 SIZE 列:

>  docker ps --size
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS             PORTS                 NAMES       SIZE
8900fc2086b3  docker.io/library/nginx:latest  nginx -g daemon o...  14 seconds ago  Up 14 seconds ago  0.0.0.0:8099->80/tcp  nginx-test  1.11kB (virtual 142MB)

虚拟大小包括共享的底层镜像。

特定镜像磁盘使用情况

安装一个nginx镜像

> docker pull docker.io/library/nginx

获取容器/镜像的元数据

> docker inspect nginx

运行命令后,你会注意到以下Data小节内的三个字段GraphDriver

..."GraphDriver": {"Data": {"MergedDir": "/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/merged","UpperDir": "/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/diff","WorkDir": "/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/work"},
...

可以运行以下命令来显示nginx镜像使用的磁盘空间:

>  sudo du -sh /var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e
0M /var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e

特定容器磁盘使用情况

运行容器占用的磁盘空间怎么查看呢?

> docker run -itd --name nginx-test -p 8099:80 docker.io/library/nginx

运行docker ps,你会看到它正在运行:

> docker ps
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS            PORTS                 NAMES
8900fc2086b3  docker.io/library/nginx:latest  nginx -g daemon o...  4 minutes ago  Up 4 minutes ago  0.0.0.0:8099->80/tcp  nginx-test

容器名为nginx-test

$ docker inspect nginx-test

查看GraphDriver字段。这些位置是容器数据物理存储在主机系统上的位置。

..."GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3-init/diff:/var/lib/docker/overlay2/64c9c0cf8c9cfb0e2168071df0652a317d49f58a68fe86e4a9a9a525ab9e365e/diff","MergedDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3/merged","UpperDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3/diff","WorkDir": "/var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3/work"},"Name": "overlay2"},
...

可以du查看大小

>  sudo du -sh /var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3
32K /var/lib/docker/overlay2/d734685e284c92bdcb6063ac292a48813f30f4b0b2dd6fa2882279c569e506a3

与 Docker 镜像和容器不同,volumes的物理位置非常简单。位于:

/var/lib/docker/volumes/

因此,你可以查看整个 Docker volumes的磁盘空间使用情况:

>  sudo du -sh /var/lib/docker/volumes/
60K /var/lib/docker/volumes/

特定volumes磁盘使用情况

在这种情况下,主要有两种类型。一个是常规 Docker Volumes,另一个是bind mount

Docker Volumes

如果要查找特定volumes的位置,可以用docker volume ls检查volumes名或 ID。例如,我使用以下命令运行 nginx 容器,其中包含一个volumes:

docker run -itd --name nginx-test -p 8099:80 docker.io/library/nginx

自动创建一个名为nginx-test的volumes。创建一个test.md文件

$ docker exec nginx-test sh -c "touch /tmp/test.md"
$ docker exec -ti nginx-test sh
/ # ls tmp
test.md
/ # exit

docker volume ls将列出名为test-data的volumes:

$ docker volume ls
DRIVER    VOLUME NAME
local     d502589845f7ae7775474bc01d8295d9492a6c26db2ee2c941c27f3cac4449d1
local     e71ee3960cfef0a133d323d146a1382f3e25856480a727c037b5c81b5022cb1b
local     test-data

test-datavolumes的物理位置

$ sudo ls -l /var/lib/docker/volumes/test-data/_data
total 0
-rw-r--r-- 1 root root 0 Oct  6 23:20 test.md

可以在du此处再次对特定volumes使用该命令!:

>  sudo du -sh /var/lib/docker/volumes/test-data/_data
0K /var/lib/docker/volumes/test-data/_data

Bind Mounts

这个比较特殊,必须使用 Linux 方法来查看磁盘空间使用情况。同时,最好先停止正在运行的容器。

$ mkdir /home/rumenz/test-data
$ docker run -ti -d --name nginx-test -v /home/rumenz/test-data:/var/lib/app/content docker.io/library/nginx

test-data将映射到容器内/var/lib/app/content上,操作test-data目录等价于操作/var/lib/app/content

>  sudo du -sh /home/rumenz/test-data
0K /home/rumenz/test-data

进入容器查看目录大小

>  sudo docker exec -ti nginx-test sh
/ # du -sh /var/lib/app/content
0K /var/lib/app/content

两个大小是相同的。


http://www.ppmy.cn/news/408753.html

相关文章

爬虫-request-模块请求参数

request请求参数 headers 请求头params 请求参数proxies 代理ipcookie web状态信息1 headers 中携带cookie2 cookies参数3 使用session verify 安全验证timeout 网络超时参数retrying 重试次数post/get请求 (params参数) headers 请求头 伪装的更像是一个正常的浏览器在请求服…

docker基础:非root用户操作并将数据目录进行nfs mount

本文记录一下如何使用非root用户进行docker操作,并将数据目录从其他机器进行nfs mount。 场景说明 安装docker所在机器由于磁盘空间不足,将数据目录/var/lib/docker进行mount,使用别的机器的空间。在一些企业中由于标准虚机的大小可能已经规…

如何使用powershell批量创建office 365账号

首先,对powershell做一个简单介绍。 当前powershell有四版本,分别为1.0,2.0,3.0 ,4.0 如果您的系统是window7或者Windows Server 2008,那么PowerShell 2.0已经内置了,可以升级为3.0,4.0。如果您…

网络原理知识点汇总

OSI七层模型 vs. TCP/IP 五层模型(有时候也说四层)及各层协议 七层:物理层:为数据端设备提供传送数据的通路, IEEE802 数据链路层:提供介质访问和链路管理, ARP,MTU 网络层&#xf…

【OpenStack(Train版)安装部署(十)】之img格式cirros镜像创建多实例分析

文章目录 本文章由公号【开发小鸽】发布!欢迎关注!!!1.制作qcow2格式的镜像2.img格式镜像创建实例3.img格式同时创建多个实例4.通过server实例创建新的镜像5.通过日志分析一个server实例的创建过程(1)nova-…

Git:一文阐述常见命令的使用

前言 为什么写这篇Git文章? 在日常的需求开发中,发现部分同学不太熟悉Git命令,往往是通过idea自带的一些工具来执行简单的Git命令,遇到一些突发问题的时候,往往不知所措。 简单来说,就是Git基础知识匮乏…

业务可视化-让你的流程图“Run“起来(4.实际业务场景测试)

🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一…

windows各个原版系统下载集锦 MS-DOS Windows 3.1 Windows NT Windows 98等

windows各个原版系统下载集锦 MS-DOS Windows 3.1 Windows NT Windows 98等[@more@] MS-DOS 6.0 (English) 文件名 EN_MSDOS60.exe 邮寄日期 (UTC): 10/12/2000 9:36:00 PM SHA1: 877B0B8E391ED07CB83214CB09E8F3B10C4B206F ISO/CRC: E859A6AB ed2k://|file|EN_MSDOS60.ex…