增加Docker Toolbox上的磁盘空间

Pas*_*cal 17 containers virtualbox diskspace toolbox docker

我正在尝试在Docker Toolbox上启动一些非常大的容器(总共大约18 GB).不幸的是,我总是得到没有足够磁盘空间的错误.我有一个1TB硬盘,有200多GB免费.

如何增加docker工具箱的磁盘空间?

Pas*_*cal 34

好的,我终于找到了解决方案:

删除虚拟docker-machine并添加一个新的:

 $ docker-machine rm default
 $ docker-machine create -d virtualbox --virtualbox-disk-size "100000" default
Run Code Online (Sandbox Code Playgroud)

  • 磁盘大小的单位是 MB,所以这将创建 100 GB 的图像,仅供参考 (4认同)
  • 谨慎操作,此方法将擦除卷中的所有数据 (3认同)

Elt*_*man 9

您无需删除VM并重新创建即可调整大小.默认情况下,Docker Machine使用VirtualBox,它具有vboxmanage用于处理VM 的命令行工具.您可以使用modifymedium命令更改磁盘大小:

vboxmanage modifymedium docker-vm.vdi --resize 100000
Run Code Online (Sandbox Code Playgroud)

  • 这只会增加“物理”空间,不会增加os看到的分区大小。此外,对于默认virtualbox,默认磁盘不是.vdi,而是.vmdk,无法扩展。 (2认同)
  • 他要求增加磁盘,而不是分区。所以答案是有效的,而“.vdi”也意味着它只适用于.vdi,我记得,virtualbox默认类型确实是vdi,而不是vmdk。 (2认同)
  • 我遇到的问题是 dockers linux fdisking 在柱面而不是扇区。`fdisk -u /dev/sda1` 按照手册页 https://linux.die.net/man/8/fdisk 解决此问题,如果您希望将 .vmdk 转换为 .vdi,只需使用 `vboxmanage clonehd --format VDI disk .vmdk disk.vdi` 最后我只是删除分区并重新开始。Bash 历史记录允许我重新运行与附带的小型 10-20GB docker 工具箱相同的命令 (2认同)

Chr*_*ris 9

我遇到了同样的问题。我不准备丢失任何现有的图像或容器,因此创建新磁盘或修剪数据都不是我的选择。以下是如何在不丢失任何数据的情况下调整磁盘大小的方法。

Docker Toolbox 默认会创建一个 VMDK 文件。VirtualBox 无法调整此格式的大小。因此,在调整其大小之前,您必须将其转换为 VDI 文件。

转到您的 VirtualBox 界面并从您的“默认”机器上分离 VMDK 文件。然后,将 VMDK 文件克隆到 VDI 文件:

VBoxManage clonemedium disk --format VDI "C:\Users\me\.docker\machine\machines\default\disk.vmdk" "C:\Users\me\.docker\machine\machines\default\disk.vdi"
Run Code Online (Sandbox Code Playgroud)

您现在可以调整 VDI 文件的大小。以下命令的最后一个参数以 MB 为单位指定新大小:

VBoxManage modifyhd "C:\Users\me\.docker\machine\machines\default\disk.vdi" --resize 30720
Run Code Online (Sandbox Code Playgroud)

现在磁盘已调整大小,但分区未调整。要调整分区大小以适应磁盘大小,请下载GParted并创建一个新的虚拟机。将您的 VDI 磁盘和 GParted Live CD 附加到新机器上。它将启动 GParted,然后您可以使用它来调整分区大小以使用整个磁盘。互联网上有很多关于如何执行此操作的详细说明,例如这里。完成后,关闭 GParted VM。

将 VDI 文件附加到您的“默认”机器。运行docker-machine start,它应该使用调整大小的虚拟磁盘启动您的 Docker 机器。如果一切正常,您现在可以删除旧的 VMDK 文件或将其存档以进行备份。

  • 您不需要创建第二个虚拟机。您只需将现有 CD 中的 CD 从 boot2docker 更改为 gparted,调整分区大小,然后再次更改回来即可。 (2认同)

obj*_*ect 6

就我而言,我有很多停止的容器、图像和卷——占用空间。下面的命令帮助:

docker container prune

docker volume prune

docker image prune

  • 如果您有现有虚拟机并且虚拟磁盘无法调整大小,则特别有用! (2认同)
  • 简称“docker system prune -af”(-af - 删除所有未使用的图像而不仅仅是悬空的图像,不提示确认) (2认同)