我在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

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

以下是卡尔的建议:

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


当前回答

检查/var上是否有空闲空间,因为Docker默认将图像文件存储在/var/lib/ Docker中。

首先使用docker ps -a列出所有容器(包括停止的容器),然后使用docker rm删除它们;然后使用docker images列出您存储的所有映像,并使用docker rmi删除它们。

接下来,在docker守护进程上使用-g选项更改存储位置,或者编辑/etc/default/docker并将-g选项添加到DOCKER_OPTS。-g指定“Docker运行时”的位置,这基本上是Docker在构建映像和运行容器时创建的所有东西。选择一个有足够空间的位置,因为所使用的磁盘空间会随着时间的推移而增长。如果您编辑了/etc/default/docker,您将需要重新启动docker守护进程以使更改生效。

现在您应该能够创建一个新的映像(或从Docker Hub中提取一个映像),并且您应该会看到在您使用-g选项指定的目录中创建了一堆文件。

其他回答

如果您通过Docker Toolkit使用boot2docker映像,那么问题源于boot2docker虚拟机已耗尽空间。

当您执行docker导入或添加新映像时,映像将被复制到可能已满的/mnt/sda1中。

检查映像中可用空间的一种方法是ssh进入虚拟机并运行df -h并检查/mnt/sda1中的剩余空间

ssh命令为 Docker-machine SSH默认

一旦您确定这确实是一个空间问题,您可以根据这个问题的一些答案中的说明进行清理,或者您可以选择通过增加/mnt/sda1上的空间来调整boot2docker映像本身的大小

您可以按照这里的说明来调整图像的大小 https://gist.github.com/joost/a7cfa7b741d9d39c1307

在我的例子中,发生这种情况是因为我超过了Docker映像大小的10Gb限制。这似乎已经有所缓解,有一种方法可以将限制增加到100Gb (https://github.com/moby/moby/issues/5151),但我不确定如何—对于我的用例,切换到映射卷是可以的,无论如何都有更好的性能。

目前的最佳实践是:

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系统修剪不适合你,你可能也会对这个答案感兴趣。

这可能是因为默认存储空间设置为40GB(默认路径,/var/lib/docker)

您可以更改存储卷指向不同的路径

编辑文件-> /etc/sysconfig/docker-storage 在行下更新(如果不存在则添加)

DOCKER_STORAGE_OPTIONS = '——存储驱动=叠加图= CUSTOM_PATH '

重启码头工人 Systemctl stop docker systemctl daemon-reload Systemctl start docker

如果你运行命令docker info(它应该显示存储驱动为overlay)

对我来说,码头系统修剪做的把戏。我用的是mac操作系统。