Docker:一些幽灵图像搞乱了记忆

时间:2017-02-09 14:09:08

标签: docker dockerfile docker-machine docker-registry

我的团队和我正在使用的码头经常空间不足。通常我们通过删除悬空图像来修复此问题。但是现在有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

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

1 个答案:

答案 0 :(得分: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 volume rm `docker volume ls -q -f dangling=true`

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

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