关于 docker 的一些问题?

202 天前
 junwind

对于 docker ,因为我实际工作中用的少,所以有一些小疑问,谢邀各位大佬们,能帮我解惑,感谢大佬们。

  1. 假设我现在有一个项目,依赖 redis ,mysql ,nginx ,php ,那么我们是把这些都放在一个容器中,还是每个单独作为一个容器。
  2. nginx 是 web 服务,可以一对多。也应该做为容器吗?
  3. 数据库是该用云服务,还是自己搭呢? 如果自己搭,是和项目放在一台服务器上,还是应该单独放一台服务器上呢?
  4. 假设我一个项目同时要部署多套,是一个服务器就包含一整套服务, 还是应该把数据库分离开呢?
2234 次点击
所在节点    Docker
12 条回复
Aicnal
202 天前
第一个,我会考虑写成 docker compose ,docker 推荐每个容器只运行一个进程,这样可以保持容器的轻量化和单一职责,如果所有服务都放在一个容器里,可能会造成管理上的困难,比如日志混乱、升级麻烦,而且违背了微服务的原则,所以应该建议每个服务单独作为容器

第二个,nginx 可以容器化,但我感觉一般容器化的很少,除非你想用 kubernates 的反向代理或者负载均衡等其他服务

第三个,云服务/自建,有钱或者追求高可用则买云服务,没钱个人小打小闹自建,我个人项目都是跑在一个服务器上
pckillers
202 天前
1. 分开
pckillers
202 天前
1. 分开
2. 是的,甚至复杂业务场景或者基于安全性要求你会需要多个 nginx 容器
3. 建议云服务,除非你的数据库数据没有任何备份与安全性的要求
4. 用云服务自然就分离开了。不用云服务自然是放一起节省成本,单独开虚拟机跑数据库是最没有意义的。
wolffcat
202 天前
用的少就只能方便怎么来,分开是通用做法,Redis ,flask ,MongoDB ,Nginx ,Nginxwaf ,我的实际使用场景。
BeautifulSoap
202 天前
除了 nginx 和 php fpm 适合放到一个容器内之外其他所有容器都应该单独一个容器
sagaxu
202 天前
1. 如果放同一个容器,其实更适合的是虚拟机,而不是容器。
2. 可做可不做,nginx 版本更新或者扩容频次都很低。
3. 有 DBA 才考虑自己搭,否则监控和灾备大概率不如云服务专业。
4. 设计上独立,部署时根据需求和预算评估是否分离。
iintothewind
202 天前
nginx 容器化部署意义不大.

因为作为流量入口, network 用 bridge 的话性能会严重拖慢, 用 host 的话已经失去了容器隔离的优势了.
所以还是安装在主机端是最合理的.

大部分网络上的内容只教你 nginx 怎么容器化部署, 但他们都没告诉过你 nginx 在生产环境部署的时候有哪些坑, 以及到底有没有必要容器化.
JensenQian
202 天前
lnmp 用现成的完事了啊
fox0001
202 天前
1. 分开。一楼提到的 docker compose 就是解决这种问题。

2. nginx 在这个场景,可以独立出来。因为涉及 php ,我们生产环境没用过。有的案例会用 docker compose ,把 nginx 集成到这个 php 系统,即一套服务部署一个 nginx 。外面再部署一个作为入口的 nginx 。

3. 看预算和系统压力。把数据库与业务系统分离,肯定
fox0001
202 天前
@fox0001 #9 不小心按了回复,继续补充

3. 看预算和系统压力。把数据库与业务系统分离,一直以来都是建议这么做。

4. 看预算和系统设计。部署多套,建议是数据库独立出来,数据维护简单点。但是如果多套系统的数据没有关联,可以一套一个数据库。但是维护基础数据就得做同步。
wnpllrzodiac
202 天前
生产环境直接有提供 k8s 集群服务的。扩展备份都设计好了,花钱就行
julyclyde
202 天前
首先你这些根本就不必须放到容器中
其次你还不太会
结论:自己给自己找麻烦

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

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

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

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

© 2021 V2EX