1
geekvcn 2021-05-19 21:36:35 +08:00 via iPhone
肯定啊,宿主机决定 IO 上限,docker IO 操作用的就是宿主机内核,你映射的目录和驱动器也是宿主机。但是仅限于 Linux,windows 和 mac 的 docker 不是内核直接兼容的,是通过虚拟机跑 linux 实现的,这就有 IO 损耗了,但是再损耗也肯定是宿主机 IO 速度越快容器中也越快
|
2
BeautifulSoap 2021-05-19 21:43:32 +08:00 via Android
docker 哪来的宿主啊,又不是虚拟机。docker 里的进程都是直接跑在你系统上的本地进程,所以性能没有多大损失(不过 Windows 和 mac 下的 docker 是跑在 linux 上的所以 io 性能是有损失的。windows 下用 wsl2 backend 的话似乎文件 io 会更差点,但是直接在 wsl2 中和 docker 交互的话性能就非常好了)
|
3
yitingbai 2021-05-19 22:25:46 +08:00
mac 上的 docker io 速度慢到离谱, 不知道现在新版本解决了没有
|
4
mxalbert1996 2021-05-20 00:32:23 +08:00 via Android
|
5
whileFalse 2021-05-20 08:22:01 +08:00
@yitingbai 你是指把 Mac 下的卷挂到容器里的时候慢到离谱吗?
|
7
yitingbai 2021-05-20 10:03:02 +08:00
@whileFalse 不管挂不挂都慢, 曾经我以为 docker 比较轻量比虚拟机快, 想用来编译 Android 源码, 结果那 IO 速度极慢, 根本无法使用, 当然我也没仔细研究, 好像装个什么软件可以优化一下, 但是也远比 Linux 上的 Docker 慢
|
8
whileFalse 2021-05-20 10:40:36 +08:00
@yitingbai 首先,Docker for Mac 是跑在虚拟机里的,所以只可能比虚拟机慢或相同,不可能比虚拟机快;其次,Docker for Mac 所使用的挂载卷通过网络协议挂载的,所以会非常慢。
|