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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

我 mac 感觉不大

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

差别没那么大

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

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

其实我也一直有这个疑问

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

mysql io 差别大

5年前 评论

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

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

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

5年前 评论

具体得看是什么平台。

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

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