docker已满,使用了所有inode

时间:2017-11-28 12:26:12

标签: docker

遇到了大问题,我的所有inode似乎都被使用了。 我已经清理了所有未使用的卷 清理所有容器和图像 用命令 - >码头修剪

但似乎它仍然充满:

Filesystem      Inodes   IUsed  IFree IUse% Mounted on
none           3200000 3198742   1258  100% /
tmpfs           873942      16 873926    1% /dev
tmpfs           873942      13 873929    1% /sys/fs/cgroup
/dev/sda1      3200000 3198742   1258  100% /images
shm             873942       1 873941    1% /dev/shm
tmpfs           873942       1 873941    1% /sys/firmware

码头信息

Containers: 5
 Running: 3
 Paused: 0
 Stopped: 2
Images: 23
Server Version: 17.06.1-ce
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 53
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
runc version: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
init version: 949e6fa
Kernel Version: 3.16.0-4-amd64
Operating System: Debian GNU/Linux 8 (jessie)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 6.668GiB
Name: serveur-1
ID: CW7J:FJAH:S4GR:4CGD:ZRWI:EDBY:AYBX:H2SD:TWZO:STZU:GSCX:TRIC
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

我认为唯一可以做到这一点的是我在这台机器上做的构建。 此版本运行带有许多文件的npm安装。 这些文件可以留在服务器上吗? 我有没有机会删除这些临时文件?

5 个答案:

答案 0 :(得分:3)

系统中是否还有悬空卷?如果你有悬空卷,它可能会占用你的磁盘空间。

列出所有悬空卷

docker volume ls -q -f dangling=true

删除所有悬空卷

docker volume rm `docker volume ls -q -f dangling=true`

答案 1 :(得分:1)

发现错误, 这似乎是Docker 17.06.1-ce错误。 此版本似乎无法正确删除图像,并将文件保留在/var/lib/docker/aufs/mnt/中 所以只需升级到新的docker版本,这样就可以了。 现在df告诉我

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1       51558236 3821696  45595452   8% /
udev               10240       0     10240   0% /dev
tmpfs            1398308   57696   1340612   5% /run
tmpfs            3495768       0   3495768   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs            3495768       0   3495768   0% /sys/fs/cgroup

这样更好:)

答案 2 :(得分:1)

在我的情况下是dangling build cache,因为删除悬空的图像不能解决问题。

可以通过以下命令删除此缓存:docker system prune --all --force,但请注意,也许您仍然需要一些卷或图像。

答案 3 :(得分:0)

我有同样的问题。 Jenkins是否在带有附加卷的Docker内部运行。几周后,詹金斯告诉我“ npm WARN tar ENOSPC:设备上没有剩余空间”。经过一番谷歌搜索后,我发现所有索引节点都使用sudo df -ih。使用sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n,我可以用完所有inode来定位该文件夹,这是npm的特定版本。删除了该文件夹,现在我可以再去一次。

答案 4 :(得分:0)

这也可能是许多容器停止的结果,例如,如果正在运行一个使用该容器的cron作业,并且使用的docker run命令行不包含--rm-在这种情况下,每次cron调用都会在文件系统上留下一个停止的容器。

在这种情况下,docker info的输出将在Server-> Containers-> Stopped下显示一个高数字。

要解决这个问题:

  1. docker container prune
  2. 在cron作业的--rm命令行中添加docker run