V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
junwind
V2EX  ›  Docker

关于 docker 的一些问题?

  •  
  •   junwind · 6 天前 · 1349 次点击

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

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

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

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

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

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

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

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

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

    4. 看预算和系统设计。部署多套,建议是数据库独立出来,数据维护简单点。但是如果多套系统的数据没有关联,可以一套一个数据库。但是维护基础数据就得做同步。
    wnpllrzodiac
        11
    wnpllrzodiac  
       6 天前 via Android
    生产环境直接有提供 k8s 集群服务的。扩展备份都设计好了,花钱就行
    julyclyde
        12
    julyclyde  
       6 天前
    首先你这些根本就不必须放到容器中
    其次你还不太会
    结论:自己给自己找麻烦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:30 · PVG 21:30 · LAX 05:30 · JFK 08:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.