Docker 容器中的磁盘性能缓慢

Docker 容器中的磁盘性能缓慢

问题

我的 Docker 容器中的磁盘 IO 速度非常慢。我正在使用 Boot2Docker,所以我现在想知道问题是否出在 vboxsf 上?

测试

我用了这个脚本最初是因为我正在调试一个网络应用程序,但似乎是磁盘读取本身。

  • 在 Docker 中:1.6156311035156
  • 主机:0.022423028945923

我使用 dd 测试了磁盘速度,并在容器内得到了以下结果:

$ time sh -c "dd if=/dev/zero of=ddfile bs=8k count=25000 && sync"; rm ddfile
25000+0 records in
25000+0 records out
204800000 bytes (205 MB) copied, 4.23099 s, 48.4 MB/s

real    0m4.241s
user    0m0.000s
sys 0m2.110s

在主机上:

$ time sh -c "dd if=/dev/zero of=ddfile bs=8k count=25000 && sync"; rm ddfile
25000+0 records in
25000+0 records out
204800000 bytes transferred in 0.482290 secs (424640750 bytes/sec)
sh -c "dd if=/dev/zero of=ddfile bs=8k count=25000 && sync"  
0.01s user 0.30s system 48% cpu 0.650 total

主机以字节为单位输出,容器以mbs为单位输出,但转换这些数字,速度差异大约是10倍。

我正在使用 Docker 的 -v host/folder:container:/folder 将代码库挂载到容器中。我不太确定接下来该怎么做。Docker 挂载是否存在一些已知问题?或者可能存在其他问题?

答案1

所以你使用的是 Mac。这意味着你在 VirtualBox 上安装 Docker。存储方式如下

os x -> virtualbox vm -> linux FS of choice -> aufs -> docker

因此,您要在 Docker 已有的基础上添加另一个 VM 层。

我认为没有人声称 docker IO 的性能会接近你在主机上看到的。

答案2

问题出在 vboxsf,而不是 docker。花了好几天时间玩这个。vboxsf 非常非常慢。NFS 更快,不过取决于你想做什么。

我决定无论如何我都不需要主机上的文件,因此随后只需在我的 vagrant 文件中创建一个新的虚拟磁盘,我的源就会克隆到该虚拟磁盘,然后我只需备份该文件即可。

我发现使用 boot2docker 很难做到这一点,所以我只使用虚拟盒和 vagrant 以及我制作的图像,hp-ess/docker 中有最新的 docker 和 docker compose。

相关内容