我一直有个疑问,用 docker 部署多个容器,会不会占用更多的内存

2023-05-04 13:49:36 +08:00
 uniy

如果我有 N 个应用要部署,不用 docker ,我只需要一个 nginx ,mysql ,java 环境 or php 环境,又或者是直接的 go 二进制;一旦我用 docker 的话,部署同样 N 个应用,是不是就需要 N 份 nginx ,mysql 等,这样岂不是要占用非常多的内存和空间。

2069 次点击
所在节点    Docker
10 条回复
ql562482472
2023-05-04 13:53:03 +08:00
不差这几百 M
wdwwtzy
2023-05-04 13:54:07 +08:00
你在说什么?
用 docker 也可以只要一份 nginx ,mysql 啊
seki
2023-05-04 13:55:46 +08:00
不用 docker 的时候每个应用都用同一个 mysql
上了 docker ,也可以每个应用都在用同一个 mysql 容器实例,不至于每个应用都开个 mysql

nginx 就不太所谓了,占内容不多
klo424
2023-05-04 13:57:07 +08:00
docker 在不同容器间,网络可以设置互通的。所以你只需要部署一个 nginx 容器、一个 mysql 容器,一个 java 容器即可。
sunny352787
2023-05-04 14:31:35 +08:00
从你的问题里,我觉得你可能错误的理解 docker 容器的用法了,一般我们用容器的时候不会把所有的东西都塞进一个容器里,还是会拆分开,如果你想一起开的话就用 docker-compose 一类的集群处理吧
uniy
2023-05-04 15:10:33 +08:00
@wdwwtzy 如果从 2 个镜像里面的 mysql 版本不一样,拉下来是不是就安装两个 mysql 了
julyclyde
2023-05-04 21:55:32 +08:00
你说的这些,大概只有 java/php 有可能有多份的需求
而他们本来也不是在同一台机器上的,共用不了什么
zu1y
2023-05-05 00:36:05 +08:00
用错了吧,正常做法是一个镜像里只有一个进程
Aresxue
2023-05-05 10:04:17 +08:00
应用和数据库中间件是独立的,部署的时候也是分开的,你这个就是打包在一起了,拆开就好了
f1ynnv2
2023-06-08 13:15:38 +08:00
我感觉楼主的疑问很合理,但是大家的关注点却在质疑他的 docker 用法

之前使用 Nginx proxy manager ,它其实自己就带了 nginx ,专门给自己使用。

但是我也有很多应用部署需要用到 nginx ,最后我只能再自己部署一个 nginx 。因为你想用来部署自己的软件的话,就得修改它的配置文件,而这有可能会导致它自己运行有问题,而且镜像更新后也能不能兼容都是问题

很多应用并不一定是自己开发的,很可能是开源的,通过 docker compose 部署一套组件。如果你用的这类开源方案也多,就越会和楼主有一样的疑问。

关于楼主的疑问,我的理解是:肯定会多占资源。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/937218

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX