【问题标题】:Docker: some ghost images are messing up with the memoryDocker:一些幽灵图像弄乱了内存
【发布时间】:2017-02-09 14:09:08
【问题描述】:

我和我的团队正在使用的 docker 经常出现空间不足。通常我们通过删除悬空图像来解决这个问题。但是现在有 5 个正在运行的容器,有 7 个图像,并且内存已满。甚至日志文件也无法写入其输出。所以正如我所描述的,有 15 个图像(docker images --all),但是当我输入docker info 时,它说有 132 个图像。

root@dockersrv:/var/lib/docker# docker info
Containers: 10
Images: 132
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 154
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.16.0-30-generic
Operating System: Ubuntu 14.04.3 LTS
CPUs: 2
Total Memory: 15.67 GiB
Name: dockersrv
ID: ``
WARNING: No swap limit support

据我所知,有人设法删除了注册表容器,我们创建了一个新容器。我的想法是所有这些图像都与旧注册表相关联。所以任何想法如何删除它们并释放一些空间。任何其他关于如何增加其内存以及除了删除悬空图像和旧容器之外如何执行的建议将不胜感激。

【问题讨论】:

  • docker images -a 将显示您的所有图像。但这也将包含您现有图像的子图像。使用docker rmi $(docker images | grep "^<none>" | awk "{print $3}"),您可以使用标签 : 删除所有未使用的图像,但我认为您已经这样做了。
  • 当您与du -sh 一起探索时。 /var/lib/docker/ 中的哪个文件夹包含大量千兆字节?大多数情况下,悬空卷都会导致问题。
  • 整个目录是 60 个 gig,其中 15 个用于 aufs,40 个用于 volumes 文件夹
  • 奇怪的是 docker images --all 返回大约 40 个结果(连同中间结果)。但是状态说有150个......
  • 也许您的旧注册表中的某些卷仍然存在。 du -sh /var/lib/docker/volumes 的输出是什么?

标签: docker dockerfile docker-machine docker-registry


【解决方案1】:

docker images -a 将显示您的所有图像。但这也将包含您现有图像的子图像。

“清理”您的 docker 环境的第一步是删除在您执行docker ps -a 时显示的已停止的 docker 容器。只要存在图像(容器)的实例,就不能删除 docker 图像。即使它不再运行。

docker rm -v `docker ps -a`

删除停止的容器后,您可以删除未使用的图像,例如:

docker images -q |xargs docker rmi

如您所见,有多种方法/命令可以删除您的容器和图像。 -v 选项(在删除容器时使用)将删除容器卷,这也是一个重要的部分。

docker 卷存储在/var/lib/docker/volumes 中,其中包含容器的内容。问题是有关已删除的旧注册表的一些问题。比检查注册表的卷是否也被删除非常重要。

在较新版本的 docker 中,您可以使用以下方法删除悬空卷:

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

你也可以直接删除正确的文件夹+重启docker。

sudo rm -r /var/lib/docker/volumes/the-specific-volume

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    相关资源
    最近更新 更多