你如何绕过 Docker 中 Docker.qcow2 的大小限制 for Mac?

How do you get around the size limitation of Docker.qcow2 in the Docker for Mac?

我有一个大型 (100gb+) 数据库,我正在尝试 运行 使用 official postgres image

我无法将数据存储在 docker 卷中,因为 Docker 中 Mac 的 ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2 文件的大小限制约为 60gb。

我犹豫是否将主机目录挂载为卷,因为挂载的主机目录卷中的文件访问比常规卷慢得多。

这些是一些有用的链接,可以更详细地讨论这些问题:

你们都是吃掉速度挂载一个host目录吗?您是否手动创建一个可以随着 qemu 变大的 qcow2 文件(如果您这样做,您是否需要在升级之间维护此文件)?您是否采取其他措施来处理此问题?

对于这种情况,我绝对建议创建一个可以变大的 qcow 镜像。

这是一个相对简单的过程,您可以获得 运行 大型数据库通常非常必要的性能优势。

以下脚本删除并重新创建一个新的压缩 Docker.qcow2 文件,保留作为参数传递的图像。

https://blog.mrtrustor.net/post/clean-docker-for-mac/

希望对您有所帮助。

Docker for Mac 18.06 从 qcow2 文件格式切换到原始文件格式,这提高了速度和磁盘使用率。核心问题仍然存在,因为 Docker 可用于其所有数据的 space 数量有限。但是,您现在可以在 Preferences -> Disk -> Disk image size 中设置该限制。

Docker for Mac 版本 17.12 是第一个引入原始文件格式的版本,但在初始版本中存在一些错误导致他们将其作为临时功能。您可以在该页面中搜索 'raw' 以回顾该功能的历史记录。

关于 Docker for Mac 如何报告其磁盘使用情况,有一个很好的说明 here...

这将显示逻辑大小:

ls -alh ~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw

虽然这将显示物理尺寸:

du -h ~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw