Docker机器:设备上没有剩余空间

我正在尝试使用Docker Compose来设置Docker机器。

场景1(不包括Docker机器)
如果我在没有Docker Machine的情况下运行docker-compose up -d ,它将创build3个链接的容器(nginx + mongodb + nodejs)。

scheme2(使用Docker机器)
然后,我使用Docker Machine创build一个VM,并告诉Docker与eval $(docker-machine env streambacker-dev)

在这一点上,如果我SSH我的docker机,并运行df -h ,我得到:

码头机df -h

如果我然后运行docker-compose up -d ,则在下载最后一个容器时出现“设备上没有剩余空间”错误 。

“tmpfs”似乎确实有点充分之后:

码头机df -h

检查–virtualbox-disk-size选项显示它默认为20000 MB,我认为这是我们在两张图片上可以看到的“/ dev / sda1”。 那么,为什么容器填满了“tmpfs”?什么是“tmpfs”呢? 是一个临时的下载目录吗? 我怎样才能为我的容器创造更多空间?

谢谢!

有关信息,我使用的是Docker Machine 0.4.0-rc2Docker Compose 1.3.2

如上所述, tmpfs与 – --virtualbox-disk-size无关。 看起来boot2docker将tmpfs挂载到内存中,所以你需要将更多的内存分配给你的virtualbox虚拟机。 你可以通过指定--virtualbox-memory参数来完成。

  --virtualbox-memory "1024" Size of memory for host in MB [$VIRTUALBOX_MEMORY_SIZE] 

默认值:

 $ docker-machine create --driver virtualbox testA Creating VirtualBox VM... Creating SSH key... Starting VirtualBox VM... Starting VM... $ docker-machine ssh testA ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015 Docker version 1.8.1, build d12ea79 docker@testA:~$ df -h / Filesystem Size Used Available Use% Mounted on tmpfs 896.6M 112.7M 783.9M 13% / 

将 – --virtualbox-memory设置为8096

 $ docker-machine create --driver virtualbox --virtualbox-memory 8096 testB Creating VirtualBox VM... Creating SSH key... Starting VirtualBox VM... Starting VM... $ docker-machine ssh testB ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ _ _ ____ _ _ | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ | '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015 Docker version 1.8.1, build d12ea79 docker@testB:~$ df -h / Filesystem Size Used Available Use% Mounted on tmpfs 6.9G 112.4M 6.8G 2% / 

我有同样的错误( [ERROR] InnoDB: Error number 28 means 'No space left on device' )并解决这个问题:

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>图像(这些图像有时是在build立图像时生成的,如果由于某种原因造成图像被打断,则会停留在那里)。

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

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

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

您可以编辑上述脚本以将其删除或手动删除它们

docker rmi {image-name}

如果您使用的是Docker Community Edition:

docker系统修剪

如果您正在使用boot2docker(docker-machine)清除孤立的卷:

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

清除未使用的图像:

docker rmi $(docker images -q -f“dangling = true”)

A.删除未使用的图像

使用docker rm或docker rmi命令,您可以删除不需要的图像。 实际上存在一个有助于完成这个任务的图像(martin / docker-cleanup-volumes)。 基础是开始从您的图像和容器列表中select:

docker工人ps -a -s

B.修改DOCKER JSON描述符

这是在一些论坛中提到的。 这个想法是增加位于〜/ .docker / machine / machines / default / config.json中的描述符。 该参数似乎是DiskSize,但我不知道它是否在其他操作系统(不在Windows中)工作。

C. LINUXresize:

在Windows操作系统中,docker机器或boot2docker实际上是一个virtualbox虚拟机,那么您可以按照过程来调整磁盘大小。 注意备份文件。 一般程序是在virtualbox中resize,然后使用名为gpartd的实用程序来修改linux在其分区中感知的空间。 有一些链接来做这个程序引用如下:

  • 调整vbox磁盘的大小
  • 移动空间
  • vbox论坛

D.重新启动DOCKER-MACHINE / BOOT2DOCKER

这个想法是重新创build默认docker机。 以下命令可以说明你。 请注意,当您重新创buildboot2docker时,您将丢失以前下载的泊坞窗图像。

docker机rm默认

docker-machine create –driver virtualbox –virtualbox-disk-size“100100”default

docker-machine env默认

那么你可以去虚拟盒子,用命令“df -h”看boot2docker空间

在dockerOSX /我能够按下[ 移动磁盘映像 ],它成功地移动了Docker.qcow2(大概包含容器/图像)

在这里输入图像说明 最初 – 机器启动时 – 我仍然得到一个没有空间留在设备上的错误,但很快就解决了。