为什么 virtualbox 运行 在 docker 下这么慢?

Why is virtualbox running so slowly under docker?

我正在尝试将 virtualbox 设置为 docker 内的 运行。我已经过了 is it possible to run virtualbox inside a docker container 因为我可以启动 VBoxManage 但不幸的是它在最终稳定之前以 100% CPU 旋转了几分钟(尽管在主机上工作得很好)。

这是我运行宁的 Dockerfile:https://github.com/fommil/freeslick/tree/docker-build which includes a Windows XP virtualbox image built using these instructions https://github.com/fommil/freeslick/tree/docker-base

我的主机有 dkms 运行ning(和 virtualbox/that 图像工作),我在特权模式下启动容器(为简单起见):

docker run -i -t --privileged=true fommil/freeslick:build

但是当我使用

启动无头 VM 时
VBoxManage startvm --type headless MSSQL

(当 运行 仅在主机上时有效)VBox 仅消耗 100%,我期望的服务有时永远不会启动(我试图通过 tsql 连接到 MSSQL,请参阅同一存储库中的 await-mssql.sh 脚本。

为了让事情简单明了,我的主机和容器都是 运行ning Debian Jessie(尽管我最终想 运行 Jessie 在外部托管 Ubuntu VPS...让我们改天再说)

为了能够 docker 下的 运行 virtualbox,我还需要做些什么吗?

当 运行 在容器内时,日志文件中没有任何异常,也许除了这个(执行命令 0x30 将近 3 分钟)

00:00:03.176907 Guest Log: BIOS: Booting from Hard Disk...
00:02:48.776941 PIIX3 ATA: execution time for ATA command 0x30 was 164 seconds

在主机上运行ning 时没有这样的0x30 命令。

更新 ATA command 0x30 is WRITE SECTORS。我想知道 docker 是否正在为我的 6GB windows 驱动器执行 "copy on write",只是作为 Windows 启动过程的一部分。嗯。

回答我自己的问题:这确实是写时复制行为。我的 VPS 有非常慢的硬盘驱动器,在 docker 下变得更慢。解决方法是尝试为我的图像使用更快的体积,并在启动图像之前在 space 中创建新副本。