performance - 在没有共享文件夹的Windows上,Boot2docker非常慢

标签 performance docker boot2docker

我有一个包含Oracle数据库的Docker镜像,需要处理大约500万行。

我的机器运行Windows 7,并且在运行Ubuntu的Virtualbox VM中使用Docker。 VM配置有2 GB RAM和4个逻辑核心。数据库在VM上的Docker容器内运行,而我的应用程序的客户端在Windows主机上运行。在这种情况下,应用程序将在 230秒中运行并处理所有内容。

第二种情况是在同一台主机上,但是我使用Boot2docker而不是Ubuntu VM。我还配置了Boot2docker VM使用2 GB RAM和4个逻辑核心。使用与以前相同的Docker镜像,我从Boot2docker中的容器启动数据库,并使用Windows运行客户端。但是,这次测试需要 1840秒而不是230。

这些测试是可重复的,并且变化不超过5%。

除了CPU和内存外,网络配置相同(一个适配器与NAT兼容,一个适配器仅用于主机),存储配置相同,并且主机上使用相同的磁盘,并且容器不使用共享文件夹。主机,因为我知道这会导致Virtualbox出现性能问题。

我还尝试使用Debian VM进行测试,其性能与Ubuntu相同。

我对为什么会这样感到困惑。硬件相同,Ubuntu和Boot2docker在VirtualBox VM中使用完全相同的配置运行,但是Ubuntu比Boot2docker快8倍。知道为什么吗?

最佳答案

我发现了问题。安装Boot2docker后,将使用适配器类型“准虚拟化网络”创建仅主机网络。我将其更改为PCnet-FAST III,并且速度更快。

关于performance - 在没有共享文件夹的Windows上,Boot2docker非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30246269/

相关文章:

c++ - 与虚拟析构函数相比,shared_ptr 用于子类析构的运行时开销

docker - Docker容器文件系统访问

java - 如何使用docker-java库检查图像状态

vagrant - 如何使用 vagrant 1.6 和 docker 提供者映射 docker 端口

sql-server - 在非常大的表中使用 CTE 与 WHILE 循环的 SQL 查询性能

python - 使用堆有助于提高字符串重新排列的性能

docker - 如何在本地机器和 minikube 之间传输文件?

Docker Hello World 不工作

java - 为什么/何时不想在 JVM 中启用 Java 8 UseStringDeduplication?

docker - ddev 为共享 Composer 包挂载其他文件夹