千家信息网

Docker System命令分析

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要讲解了"Docker System命令分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Docker System命令分析"吧!该示例通过
千家信息网最后更新 2026年11月04日Docker System命令分析

这篇文章主要讲解了"Docker System命令分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Docker System命令分析"吧!

该示例通过play-with-docker.com运行。点击Add new instance即可创建新的实例,该实例安装了***版的Docker 17.03。使用df命令查看磁盘的初始状态:

$ df -h Filesystem           Size       Used Available Use% Mounted on /dev/mapper/...      10.0G    443.3M      9.6G   4% / tmpfs                60.0G         0     60.0G   0% /dev tmpfs                60.0G         0     60.0G   0% /sys/fs/cgroup /dev/xvda1           49.1G      3.7G     43.3G   8% /etc/resolv.conf /dev/xvda1           49.1G      3.7G     43.3G   8% /etc/hostname /dev/xvda1           49.1G      3.7G     43.3G   8% /etc/hosts shm                  64.0M         0     64.0M   0% /dev/shm /dev/mapper/...      10.0G    443.3M      9.6G   4% /graph/overlay2

可知,在新创建的play-with-docker.com实例,一共有10GB磁盘空间,其中接近500MB已被占用。

接下来编写Dockerfile来创建一个镜像。这个镜像基于Alpine镜像;镜像将写入3个随机的文件,每个文件1GB,文件由dd命令生成;因为这个镜像并没有实际作用,因此CMD设为/bin/true。

FROM alpine RUN dd if=/dev/zero of=1g1.img bs=1G count=1 RUN dd if=/dev/zero of=1g2.img bs=1G count=1 RUN dd if=/dev/zero of=1g3.img bs=1G count=1 CMD /bin/true

运行docker build -t test .即可创建镜像,执行完成后将生成一个3GB的镜像。

$ docker image ls REPOSITORY          TAG                CREATED             SIZE test                latest             38 seconds ago      3.23GB alpine              latest             5 weeks ago         3.99MB

不难理解,该镜像占用了相应大小的磁盘空间。

$ df -h Filesystem        Size       Used Available Use% Mounted on /dev/mapper/...   10.0G      3.4G      6.5G  34% /

若只写入2个随机文件,则需要修改Dockerfile,删掉一行。为了避免构建镜像时使用缓存,我在dd命令之前添加了一行echo命令。

FROM alpine RUN echo foo RUN dd if=/dev/zero of=1g1.img bs=1G count=1 RUN dd if=/dev/zero of=1g2.img bs=1G count=1 # RUN dd if=/dev/zero of=1g3.img bs=1G count=1 CMD /bin/true

本来以为这样可以节省1GB磁盘空间,然而实际情况更加糟糕!

$ df -h Filesystem        Size       Used Available Use% Mounted on /dev/mapper/...   10.0G      5.4G      4.5G  54% /

旧的Docker镜像一直存在,最终磁盘空间会很快被用完。Docker 1.13引入了docker system df命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况。

$ docker system df TYPE                TOTAL     ACTIVE    SIZE          RECLAIMABLE Images              3         0         5.373GB       5.373GB (100%) Containers          0         0         0B            0B Local Volumes       0         0         0B            0B

可知,实例上一共有3个Docker镜像: apline镜像,包含3个1GB随机文件的镜像以及包含2个1GB随机文件的镜像。这些镜像占用了超过5GB磁盘空间。由于我们并没有基于这些镜像运行容器,所以它们都可以被删除,所以可回收的(RECLAIMABLE)磁盘空间为100%。使用docker run test运行test镜像再查看:

$ docker system df TYPE                TOTAL     ACTIVE    SIZE          RECLAIMABLE Images              3         1         5.373GB       3.225GB (60%) Containers          1         0         0B            0B Local Volumes       0         0         0B            0B

现在情况就不同了,我运行了一个容器,它执行/bin/true之后就很快退出了。

这个容器绑定了test镜像,test镜像被标记为活跃(active)因而不能被删除,这导致可回收的磁盘空间变少了。

现在来清理一下磁盘空间。

Docker提供了docker system prune,可以用于清理dangling镜像(参考What are Docker : images?)和容器,以及失效的数据卷和网络。

$ docker system prune WARNING! This will remove:         - all stopped containers         - all volumes not used by at least one container         - all networks not used by at least one container         - all dangling images Are you sure you want to continue? [y/N] y Deleted Containers: 1cdf866157b4a97e151125af3c2a7f186a59b6f63807e2014ce1a00d68f44e1d Deleted Images: deleted: sha256:f59bb277... deleted: sha256:695b8e70... deleted: sha256:93b1cceb... deleted: sha256:c74d6bcd... deleted: sha256:df8b9bb1... deleted: sha256:dfe8340f... deleted: sha256:ce1ee654... Total reclaimed space: 3.221GB

根据警告信息可知,这个命令会删除所有关闭的容器以及dangling镜像。示例中,含有3个1GB随机文件的镜像的名称被占用了,名称为:,为dangling镜像,因此会被删除。同时,所有的中间镜像也会被删除。这样的话,一共3GB的磁盘空间被回收了!

更进一步,使用-a选项可以做深度清理。这时我们会看到更加严重的WARNING信息:

$ docker system prune -a WARNING! This will remove:         - all stopped containers         - all volumes not used by at least one container         - all networks not used by at least one container         - all images without at least one container associated to them Are you sure you want to continue? [y/N] y Deleted Images: untagged: test:latest deleted: sha256:c515ebfa2... deleted: sha256:07302c011... deleted: sha256:37c0c6474... deleted: sha256:5cc2b6bc4... deleted: sha256:b283b9c35... deleted: sha256:8a8b9bd8b... untagged: alpine:latest untagged: alpine@sha256:58e1a1bb75db1... deleted: sha256:4a415e366... deleted: sha256:23b9c7b43... Total reclaimed space: 2.151GB

这个命令将清理整个系统,并且只会保留真正在使用的镜像,容器,数据卷以及网络,因此需要格外谨慎。比如,我们不能在生产环境中运行prune -a命令,因为一些备用镜像(用于备份,回滚等)有时候需要用到,如果这些镜像被删除了,则运行容器时需要重新下载。

此时,所有未绑定容器的镜像将会被删除。由于***次prune命令删除了所有容器,因此所有镜像(它们没有绑定任何容器)都会被删除。

$ df -h Filesystem          Size      Used Available Use% Mounted on /dev/mapper/...    10.0G    442.5M      9.6G   4% /

感谢各位的阅读,以上就是"Docker System命令分析"的内容了,经过本文的学习后,相信大家对Docker System命令分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

镜像 命令 磁盘 容器 空间 文件 运行 分析 实例 情况 学习 一行 信息 内容 名称 实际 很快 数据 示例 网络 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海睿民互联网科技有限公司 国智互联网科技 科技制造互联网公司 有马互联网科技 碳银互联网科技 广州宏创互联网科技 米客互联网科技 顺玮阁互联网科技 互联网实体化科技化 以后互联网后是啥科技 常德市电业局互联网科技部 河南猎农互联网科技有限公司 荆州市昕露互联网络科技有限公司 健康食品互联网创新科技园项目 中科明德北京互联网科技 江苏互联网科技小贷 易企秀互联网科技是做什么的 山东蛋芒互联网科技有限公司 互联网科技大会大佬 互联网 科技节活动 微视频大赛 新华互联网科技 湖南永感互联网科技有限公司 互联网科技工作委员会毛军 互联网高科技企业 无锡溥仪互联网科技有限公司 北京华百购互联网科技有限公司 承德科技产业互联网发展 崇明区互联网教育科技诚信经营 2021互联网科技公司排名 河南商务圈互联网科技有限公司
0