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

Docker机器:设备上没有剩余空间,docker,docker-compose,docker-machine,Docker,Docker Compose,Docker Machine,我正试图用Docker Compose设置Docker机器 场景1(没有Docker机器) 如果我在没有docker机器的情况下运行docker compose up-d,它会按照预期创建3个链接容器(nginx+mongodb+nodejs) 场景2(使用Docker机器) 然后,我使用Docker Machine创建一个VM,并告诉Docker使用eval$(Docker Machine env streambacker dev)与该机器对话 此时,如果我ssh到docker机器并运行df-

我正试图用Docker Compose设置Docker机器

场景1(没有Docker机器)
如果我在没有docker机器的情况下运行
docker compose up-d
,它会按照预期创建3个链接容器(nginx+mongodb+nodejs)

场景2(使用Docker机器)
然后,我使用Docker Machine创建一个VM,并告诉Docker使用
eval$(Docker Machine env streambacker dev)
与该机器对话

此时,如果我ssh到docker机器并运行
df-h
,我会得到:

如果然后运行
docker compose up-d
,则在下载最后一个容器时会收到一个错误消息

在那之后,“tmpfs”似乎确实有点满了:

检查--virtualbox disk size选项显示默认值为20000 MB,我认为在两张图片上都可以看到“/dev/sda1”。那么,为什么集装箱装满了“tmpfs”n?什么是“tmpfs”?是临时下载目录吗如何为我的容器创造更多空间?

谢谢


作为参考,我使用的是Docker Machine 0.4.0-rc2和Docker Compose 1.3.2。

如上所述,
tmpfs
--virtualbox磁盘大小
无关。看起来boot2docker将
tmpfs
装载到内存中,所以您需要为您的virtualbox vm分配更多内存。您可以通过指定
--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% /
我也有同样的错误(
[error]InnoDB:error number 28表示“设备上没有剩余空间”
),并通过以下方式解决:

一,。删除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

二,。还考虑删除所有未使用的图像。

首先去掉
图像(这些图像有时是在构建图像时生成的,如果由于任何原因图像构建被中断,它们会留在那里)

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

docker rmi $(docker images | grep "^<none>" | awk '{print $3}')
dockerrmi$(dockerimages | grep ^ | awk'{print$3}')
然后,如果您使用Docker Compose在本地为每个项目构建图像。您将得到许多图像,这些图像的名称通常与您的文件夹类似(例如,如果您的项目文件夹名为Hello,您将找到images name
Hello_blablablabla
)。因此也考虑删除所有这些图像

您可以编辑上述脚本以删除它们,也可以使用手动删除它们


docker rmi{image name}

A.删除未使用的图像

使用docker rm或docker rmi命令,您可以删除不需要的图像。实际上存在一个有助于执行此任务的映像(martin/docker清理卷)。基础是从图像和容器列表中开始选择:

docker ps-a-s

B.修改DOCKER JSON描述符

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

C.调整LINUX大小:

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

D.重新创建DOCKER-MACHINE/BOOT2DOCKER

其想法是重新创建默认的docker机器。以下命令可以对您进行说明。请注意,在重新创建boot2docker时,您将丢失以前下载的docker映像

docker机器rm默认值

docker机器创建--驱动程序virtualbox--virtualbox磁盘大小默认为“100100”

docker机器环境默认值


然后,如果您使用的是Docker Community Edition,则可以转到virtual box并使用命令“df-h”查看boot2docker空间:

docker系统修剪
docker卷修剪#正如@justin-m-chase所建议的,因为系统修剪不会清理卷。
如果使用boot2docker(docker机器),请清除孤立的卷:

docker卷rm$(docker卷ls-qf悬挂=true)
清除未使用的图像:

dockerrmi$(dockerimages-q-f“dangling=true”)

在docker osx上/I能够按下一个按钮 [移动磁盘映像] 它成功地移动了Docker.qcow2(可能包含容器/图像)

最初,当机器启动时,我仍然得到一个 设备上没有剩余空间错误
但不久就解决了。

我遇到了这个问题,无法为mac的docker UI添加额外空间,我用自制软件安装了docker,并在创建我的机器时运行了以下命令:

docker机器创建--驱动程序virtualbox--virtualbox内存“2048”--virtualbox磁盘大小“40000”默认值


这将为我以前使用的virtualbox增加两倍的内存空间和磁盘大小,您可以在此处添加所需的设置大小,以查看docker system df是否占用了docker上的空间

然后运行:

docker system prune --all --force
移除所有隐藏和未使用的容器


docker system prune
不会删除所有未使用的容器。

--virtualbox磁盘大小无关。它是一个文件系统(类似于RAM磁盘)
docker system prune --all --force