码头机: 设备上没有空间了

我想用 Docker Compose 设置 Docker 机器。

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

场景2(连同 Docker 机器)
然后,我使用 Docker 机器创建一个 VM,并告诉 Docker 使用 eval $(docker-machine env streambacker-dev)与该机器交谈。

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

docker machine df -h

如果然后运行 docker-compose up -d,那么在下载最后一个容器时会得到一个 “设备上没有剩余空间”错误

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

docker machine df -h

检查 ——虚拟机-磁盘大小选项显示默认值为20000MB,我认为这就是我们在两张图片上看到的“/dev/sda1”。那么,为什么容器要填充“ tmpfs”n,“ tmpfs”到底是什么?是临时下载目录吗?如何为容器创建更多的空间?

谢谢!

对于信息,我使用 Docker Machine 0.4.0-rc2Docker Compos1.3.2

117996 次浏览

如上所述,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 book 命令。内置命令还会删除/var/lib/docker/books 中非卷的任何目录,所以请确保没有在其中放入任何要保存的内容。

警告: 如果您有一些数据需要保留,请非常小心

清理:

$ 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 rm 或 docker rmi 命令可以删除不需要的图像。实际上存在一个对此任务有帮助的映像(Martin/docker-clean up-books)。基础是从你的图片和容器列表中开始选择:

码头工人

修改 DOCKER JSON 描述符

在一些论坛上提到过。其思想是增加位于 ~/中的描述符。Docker/machine/ines/default/config.json.参数似乎是磁盘大小,但我不知道它是否在其他操作系统(不在窗口)。

LINUX 大小:

在 Windows 操作系统中,docker 机器或 boot2docker 实际上是一个虚拟机 vm,那么您可以按照下面的步骤来调整磁盘的大小。注意备份文件。 通常的过程是在 Virtual box 中调整大小,然后使用名为 gpartd 的实用程序修改 Linux 在其分区中感知到的空间。 下面提供了一些完成这一程序的链接:

重建码头-机器/Boot2Docker

这个想法是重新创建默认的码头机器。下面的命令可以说明您的情况。请注意,在重新创建 boot2docker 时,将丢失以前下载的 docker 映像。

码头机 rm 默认值

Docker-machine create —— Driver viralbox —— viralbox-disk-size“100100”缺省值

码头机器默认设置

然后,您可以转到 Virtual box,使用“ df-h”命令查看 boot2docker 空间

如果您正在使用 Docker 社区版:

 docker system prune --volumes

如果使用 boot2docker (docker-machine) ,请清除孤立的卷:

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

清除未使用的图像:

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

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

enter image description here 最初-当机器开始-我仍然得到一个 设备错误上没有剩余空间 但很快就解决了。

我遇到了这个问题,不能添加额外的空间与 docker 用户界面的 Mac,我安装了 docker 与自制,并运行以下命令时,创建我的机器:

docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-disk-size "40000" default

这增加了两倍的空间,内存和磁盘大小的虚拟机,我以前,你可以添加设置大小,你需要在这里,如果你认为合适的

运行 docker system df查看什么占用了您的泊车位上的空间

然后跑:

docker system prune --all --force

移除所有隐藏和未使用的容器。

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

用您喜欢的文本编辑器打开 file /lib/systemd/system/docker.service,并替换以下行,其中 /new/path/docker是您新选择的 docker 目录的位置:

FROM:
ExecStart=/usr/bin/docker daemon -H fd://
TO:
ExecStart=/usr/bin/docker daemon -g /new/path/docker -H fd://

准备停泊码头服务:

# systemctl stop docker

检查 docker 服务是否已停止,下面的命令应该不会产生任何结果

# ps aux | grep -i docker | grep -v grep

重新加载守护进程

# systemctl daemon-reload

一旦这样做了,创建一个新的目录,您指定的上述和可选 rsync当前的 docker 数据到一个新的目录:

# mkdir /new/path/docker
# rsync -aqxP /var/lib/docker/ /new/path/docker


# systemctl start docker

确认 Docker 进入了新目录

#  ps aux | grep -i docker | grep -v grep

Https://linuxconfig.org/how-to-move-docker-s-default-var-lib-docker-to-another-directory-on-ubuntu-debian-linux