Docker机器:设备上没有剩余空间
我正试图用Docker Compose设置Docker机器 场景1(没有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机器的情况下运行
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 nameHello_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在其分区中感知到的空间。
下面引用了一些执行此过程的链接:
然后,如果您使用的是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