我正在尝试在我的小型 Openstack 部署上对 nova-docker 驱动程序进行基准测试。我谈论的是 Openstack,但这并不重要,因为只需从 CLI 生成一个标准 Docker 容器,就可以观察到相同的结果。一切都运行良好,只是我看到了一个非常奇怪的结果。如果我在主机上运行一个小型 dd 副本
4294959104 bytes (4.3 GB) copied, 31.1396 s, 138 MB/s
real 0m31.670s
user 0m0.000s
sys 0m4.898s
如果我使用 Docker,更准确地说是标准 ubuntu 容器(或 nova-docker ),我得到
4294959104 bytes (4.3 GB, 4.0 GiB) copied, 27.8834 s, 154 MB/s
real 0m27.896s
user 0m0.000s
sys 0m1.391s
正如您所见,这完全没有意义,因为我的容器报告它比主机快。在使用 sysbench 运行 IO 测试时也观察到了这一点。有人能解释这种行为吗?
答案1
容器不是虚拟化,而是隔离,一个容器是运行在不同的命名空间中的普通进程,因此容器可以像普通进程一样使用宿主机的资源,如果要限制容器的使用量,需要进行cgroup或者使用docker的Limit选项。