我在Debian 7机器上安装docker的方法如下

$ echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
$ curl -sSL https://get.docker.com/ubuntu/ | sudo sh

之后,当我第一次尝试创建一个图像时,它失败了,出现以下错误

 time="2015-06-02T14:26:37-04:00" level=info msg="[8] System error: write /sys/fs/cgroup/docker/01f5670fbee1f6687f58f3a943b1e1bdaec2630197fa4da1b19cc3db7e3d3883/cgroup.procs: no space left on device"

这是docker信息

Containers: 2
Images: 21
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 25
Dirperm1 Supported: true
Execution Driver: native-0.2
Kernel Version: 3.16.0-0.bpo.4-amd64
Operating System: Debian GNU/Linux 7 (wheezy)
CPUs: 2
 Total Memory: 15.7 GiB


WARNING: No memory limit support
 WARNING: No swap limit support

如何增加内存?系统配置存储在哪里?

以下是卡尔的建议:

当我摆脱了所有的图像和容器,它确实释放了一些空间和图像构建运行更长的时间之前失败与相同的错误。问题是,这指的是哪个空间我怎么配置它?


当前回答

我进入docker设置并更改了可用的图像空间。在使用docker build创建新映像时达到了极限。所以我增加了可用的数量。

其他回答

似乎有几种方式可以发生这种情况。我遇到的问题是,docker磁盘映像已经达到其最大大小(docker Whale -> Preferences -> disk,如果你想查看它在OSX中的大小)。

我提高了极限,然后就可以出发了。我相信清理未使用的图像也会起作用。

如果你已经清理了未使用的容器,图片用

docker system prune -a

一定要检查你是否有不健康的容器。他们的行为非常奇怪,难以预测。在我的例子中,因为这些,我得到了这个错误,即使有大量的磁盘空间。

Docker ps -a将列出所有的容器。如果他们中的任何一个是这样的:

CONTAINER ID   IMAGE          COMMAND   CREATED          STATUS                     PORTS           NAMES
4c01db0b339c   ubuntu:12.04   bash      17 seconds ago   Up 16 seconds (unhealthy)  3300-3310/tcp   webapp

您需要重新启动docker守护进程。

我也犯了同样的错误,用这种方法来解决:

1。删除Docker中的孤立卷,可以使用内置的Docker volume命令。内置命令还会删除/var/lib/docker/volumes中不是卷的任何目录,因此请确保您没有在其中放入想要保存的任何内容。

警告:如果你想保留一些数据,要非常小心

清理:

$ docker volume rm $(docker volume ls -qf dangling=true)

额外的命令:

列出悬挂卷:

$ docker volume ls -qf dangling=true

列出所有卷:

$ docker volume ls

2。还要考虑删除所有未使用的图像。

首先删除<none>映像(这些映像有时是在构建映像时生成的,如果由于某种原因,映像构建被中断,它们将留在那里)。

这是我用来删除它们的一个很好的脚本

docker rmi $(docker images | awk '/^<none>/ {print $3}')

然后,如果你使用Docker Compose为每个项目在本地构建图像。你最终会得到很多图片,通常和你的文件夹一样命名(例如,如果你的项目文件夹名为Hello,你会发现图片名为Hello_blablabla)。所以也要考虑删除所有这些图片

您可以编辑上面的脚本以删除它们或手动使用

Docker rmi {image-name}

Docker会在周围留下悬空的图像,可能会占用你的空间。要清理Docker后,运行以下命令:

docker image prune [-af if you want to force remove all images]

或者使用旧版本的Docker:

docker rm $(docker ps -q -f 'status=exited')
docker rmi $(docker images -q -f "dangling=true")

这将删除退出和悬空的图像,这有望清除设备空间。

目前的最佳实践是:

docker system prune

在接受结果之前,请注意该命令的输出:

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N]

换句话说,继续执行这个命令是永久的。请记住,最佳实践是将停止的容器视为短暂的,即您应该使用Docker设计您的工作,不要保留这些停止的容器。如果你不主动调试容器,你可以考虑在运行时使用——rm标志。

请务必阅读这个答案,回复:卷

如果docker系统修剪不适合你,你可能也会对这个答案感兴趣。