我正在尝试使用Docker Compose设置Docker Machine。
场景1(没有Docker机器)
如果我在没有Docker Machine的情况下运行docker-compose up -d
,它会创建我想要的3个链接容器(nginx + mongodb + nodejs)。
场景2(使用Docker Machine)
然后我使用Docker Machine创建一个VM,并告诉Docker使用eval $(docker-machine env streambacker-dev)
与该机器通信。
此时,如果我ssh到我的docker机器并运行df -h
,我得到:
如果我然后运行docker-compose up -d
,我在下载最后一个容器时得到一个"no space left on device" error。
之后“tmpfs”似乎确实有点满:
检查--virtualbox-disk-size选项显示它默认为20000 MB,我认为这两张图片上我们可以看到“/ dev / sda1”。那么为什么容器会填满“tmpfs”n,究竟什么是“tmpfs”?是临时下载目录吗?如何为容器创建更多空间?
谢谢!
有关信息,我使用的是Docker Machine 0.4.0-rc2和Docker Compose 1.3.2。
如上所述,tmpfs
与--virtualbox-disk-size
无关。似乎boot2docker将tmpfs
安装到内存中,因此您需要为虚拟机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% /
随着--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>
图像(这些图像有时是在构建图像时生成的,如果出于任何原因图像构建被中断,它们会保留在那里)。
这是我用来删除它们的一个很好的脚本
docker rmi $(docker images | grep "^<none>" | awk '{print $3}')
然后,如果您使用Docker Compose为每个项目本地构建映像。您最终会得到很多通常被命名为文件夹的图像(例如,如果您的项目文件夹名为Hello,则会找到图像名称为Hello_blablabla
)。所以也考虑删除所有这些图像
您可以编辑上面的脚本以删除它们或手动删除它们
docker rmi {image-name}
如果您使用的是Docker Community Edition:
docker system prune
docker volume prune # as suggested by @justin-m-chase since system prune does not clean volumes.
如果您使用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)。基础是从您的图像和容器列表中开始选择:
docker ps -a -s
B.修改DOCKER JSON DESCRIPTOR
它在一些论坛中提到过。想法是增加位于〜/ .docker / machine / machines / default / config.json中的描述符。该参数似乎是DiskSize,但我不知道它是否适用于其他操作系统(不在Windows中)。
C. LINUX RESIZE:
在Windows操作系统中,docker机器或boot2docker实际上是一个虚拟机vm,然后您可以按照该过程调整磁盘大小。注意备份文件。一般过程是在virtualbox中调整大小,然后使用名为gpartd的实用程序来修改linux在其分区中感知的空间。下面引用了一些指向此过程的链接:
D.重新启动DOCKER-MACHINE / BOOT2DOCKER
这个想法是重新创建默认的docker-machine。以下命令可以说明您。请注意,在重新创建boot2docker时,您将丢失以前下载的docker镜像。
docker-machine rm默认
docker-machine create --driver virtualbox --virtualbox-disk-size“100100”默认
docker-machine env默认
然后你可以进入虚拟框并使用命令“df -h”查看boot2docker空间
我遇到了这个问题,并且无法使用docker UI为mac添加额外空间,我在自制程序中安装了docker并在创建我的机器时运行以下命令:
docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default
这为我之前拥有的虚拟机增加了两倍的内存和磁盘大小空间,您可以根据需要在此处添加设置大小