Docker 搭建一套 PHP 的环境和直接在宿主机搭建 PHP 环境性能差别大么

Docker搭建一套php的环境和直接在宿主机搭建php环境性能差别大么

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

我mac感觉不大

4年前 评论
j475523225 (楼主) 4年前
Epona

差别没那么大

4年前 评论
j475523225 (楼主) 4年前

应该不大吧,,,现在都用 docker 部署,要是性能差别大,,,谁顶的住啊,,,

其实我也一直有这个疑问

4年前 评论
j475523225 (楼主) 4年前
JaguarJack

mysql io 差别大

4年前 评论

linux差别不大. win的可能有点差别
可以看一下这个
https://www.zhihu.com/tardis/sogou/art/440...

4年前 评论
j475523225 (楼主) 4年前

linux下基本没差别,我司服务器全部跑在docker上,其实它还是宿主机上的进程,你docker启动后ps看一下就知道了

4年前 评论

具体得看是什么平台。

由于 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 什么的存不存在似乎并没有那么重要。

4年前 评论
j475523225 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!