gpt4 book ai didi

java - Docker/var/lib/docker/devicemapper/devicemapper 使用 2.7GB

转载 作者:行者123 更新时间:2023-12-01 09:44:31 25 4
gpt4 key购买 nike

我是 codiva online ide 的开发人员。每次用户运行java程序时,我们都会启动一个新的容器。我们使用 devicemapper 存储驱动程序,因为这是我们能够设置容器大小上限的唯一方法。

经过几个月的使用,我们发现磁盘使用量不断增加,/var/lib/docker/devicemapper/devicemapper 占用了大约 2.7GB。

我已经删除了所有未运行的 docker 容器以及任何悬空卷,不幸的是,/var/lib/docker/devicemapper/devicemapper 的磁盘使用量仍然显示为 2.7GB。

回收这个空间的最佳方法是什么?我们不需要任何持久存储,我们可以删除所有数据,因为任何需要存储的数据,我们直接挂载主机目录,并且这些文件是在docker外部管理的。

sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

没有正在运行的容器,甚至没有停止的容器。docker 信息结果在这里。

$ sudo docker info
Containers: 1
Images: 14
Server Version: 1.9.1
Storage Driver: devicemapper
Pool Name: docker-202:1-143417-pool
Pool Blocksize: 65.54 kB
Base Device Size: 107.4 GB
Backing Filesystem: ext4
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 2.591 GB
Data Space Total: 107.4 GB
Data Space Available: 1.469 GB
Metadata Space Used: 2.531 MB
Metadata Space Total: 2.147 GB
Metadata Space Available: 1.469 GB
Udev Sync Supported: true
Deferred Removal Enabled: false
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.77 (2012-10-15)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.13.0-76-generic
Operating System: Ubuntu 14.04.3 LTS
CPUs: 1
Total Memory: 992.5 MiB
Name: ip-172-31-26-50
ID: NIQ5:2NDW:SB77:ZNZU:UO6G:EYLB:JIW7:SQLL:QLWY:LNRM:SU6P:ZS7X
WARNING: No swap limit support

没有悬空或孤立的卷。

sudo docker volume ls
DRIVER VOLUME NAME

唯一的图像是 java:8

sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
java 8 289bdffc37d7 3 weeks ago 669.2 MB

我已经按照说明进行操作了 https://lebkowski.name/docker-volumes/但它仍然使用不必要的额外空间。

编辑1:我添加了 docker images -a 的结果。这显示了大量未命名的图像。这个大小似乎很可疑,因为所有这些图像的总和高达 4.5GB,但我的整个 /var/lib/docker 只有 2.7GB 左右。

$ sudo docker images -a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
java 8 289bdffc37d7 3 weeks ago 669.2 MB
<none> <none> 5d7cc49c4372 3 weeks ago 668.8 MB
<none> <none> 9e756f3b105a 3 weeks ago 310.9 MB
<none> <none> 7615ebf33bb7 3 weeks ago 310.9 MB
<none> <none> ac079291ad51 3 weeks ago 310.9 MB
<none> <none> cd02ed4609aa 3 weeks ago 310.9 MB
<none> <none> 07bbd1c2007f 3 weeks ago 310.9 MB
<none> <none> 6331ed9a346a 3 weeks ago 310.9 MB
<none> <none> b647ad8e0a08 3 weeks ago 310.9 MB
<none> <none> f23012d4423e 3 weeks ago 310.9 MB
<none> <none> 0d3e866c82f3 3 weeks ago 301 MB
<none> <none> c28cbef85c39 3 weeks ago 169.7 MB
<none> <none> 3f0d3d140ce1 3 weeks ago 125.1 MB
<none> <none> 17bd2058e0c6 3 weeks ago 125.1 MB

在尝试其中之一时,我收到错误。 $ sudo docker rmi 5d7cc49c4372 来自守护程序的错误响应:冲突:无法删除 5d7cc49c4372(无法强制)- 镜像具有依赖的子镜像 错误:无法删除图像:[5d7cc49c4372]

在阅读相关内容时,似乎唯一需要的图像 java:8 取决于这些子图像。

$ sudo docker history 289bdffc37d7
IMAGE CREATED CREATED BY SIZE COMMENT
289bdffc37d7 3 weeks ago /bin/sh -c /var/lib/dpkg/info/ca-certificates 418.2 kB
5d7cc49c4372 3 weeks ago /bin/sh -c set -x && apt-get update && apt- 357.9 MB
7615ebf33bb7 3 weeks ago /bin/sh -c #(nop) ENV CA_CERTIFICATES_JAVA_VE 0 B
9e756f3b105a 3 weeks ago /bin/sh -c #(nop) ENV JAVA_DEBIAN_VERSION=8u9 0 B
ac079291ad51 3 weeks ago /bin/sh -c #(nop) ENV JAVA_VERSION=8u91 0 B
07bbd1c2007f 3 weeks ago /bin/sh -c #(nop) ENV JAVA_HOME=/usr/lib/jvm/ 0 B
cd02ed4609aa 3 weeks ago /bin/sh -c { echo '#!/bin/sh'; echo 'set 87 B
b647ad8e0a08 3 weeks ago /bin/sh -c #(nop) ENV LANG=C.UTF-8 0 B
6331ed9a346a 3 weeks ago /bin/sh -c echo 'deb http://httpredir.debian. 61 B
f23012d4423e 3 weeks ago /bin/sh -c apt-get update && apt-get install 9.93 MB
0d3e866c82f3 3 weeks ago /bin/sh -c apt-get update && apt-get install 131.2 MB
c28cbef85c39 3 weeks ago /bin/sh -c apt-get update && apt-get install 44.67 MB
3f0d3d140ce1 3 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
17bd2058e0c6 3 weeks ago /bin/sh -c #(nop) ADD file:76679eeb94129df23c 125.1 MB

这意味着无法删除未标记的镜像,并且我认为根据设计,使用的总大小仍应约为 670MB,因为 docker 仅存储依赖镜像的差异。

请告诉我如何减少devicemapper的磁盘使用量。

最佳答案

这似乎是一个相当old bug with devicemapper ,特别是如果您使用的是 ext3。如果您使用的是 ext3,则 upgrading to ext4可能会解决您的问题。该错误的主要症状是 devicemapper 不会释放已删除的图像和卷​​。

除此之外,您可以完全清除/var/lib/docker 并重新安装,因为您说您可以接受数据丢失。

关于java - Docker/var/lib/docker/devicemapper/devicemapper 使用 2.7GB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38180110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com