具体得看是什么平台。
由于 Docker 容器化技术实际是通过 Linux namespaces 和 Cgroups 实现的,如果是 Docker for Windows / macOS 那就需要一套虚拟化技术,把你的电脑作为宿主机,运行一台 Linux 的虚拟机,最后再在虚拟机的内部运行 Docker Daemon 和应用本身的进程。这样就大大拖慢了性能。因此就会出现 @JaguarJack 提到的 MySQL IO 慢等问题。
BTW, 吐槽一下... Docker for macOS 的 IO 是真的慢... 慢到怀疑人生。新版 Windows 似乎包含了 Linux 内核作为「子系统」,具体没有深入了解哈,不知道性能会不会有所提升。
最后,在 Linux 的各大发行版上基于 Docker 运行应用,其实性能影响不大。Docker Daemon 并不是传统意义上的一台「虚拟机」,它并没有「虚拟」出一套完整的运行环境,容器内的进程与宿主机仍然共享同一个内核。
我个人更喜欢把 Docker Daemon 看作是一个负责 管理 容器的 Side Car,而不是负责 承载 容器运行的「鲸鱼船」,它和容器内的进程在某些意义上来说是 平级 的。甚至如果激进一点,现在可以用类似 Podman 之类的项目代替 Docker Daemon,只需要有一个能帮你管理容器相关资源的东西即可。真正的应用容器启动之后,Daemon 什么的存不存在似乎并没有那么重要。
推荐文章: