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

数据库, Nginx, Redis 这种基础组件到底应不应该运行在容器中?

  •  
  •   xiaowowo · 2024-01-23 02:43:51 +08:00 · 3347 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    运行在容器中有什么好处

    1 ,安装简单
    2 ,资源隔离
    3 ,迁移方便

    运行在容器中有什么问题?

    性能问题?互相访问不方便?

    目前我最担心的就是性能问题,但是 docker 所有的功能实现似乎都是基于 Linux 内核提供的功能( Namespaces ,Cgroups ,OverlayFS )实现的,并没有使用任何的中间层代理或者虚拟化技术,按道理来说这个性能损耗似乎是微乎其微的?

    还有其他值得考虑的问题吗?

    19 条回复    2024-01-23 20:45:52 +08:00
    rrfeng
        1
    rrfeng  
       2024-01-23 05:53:19 +08:00 via Android
    数据库争议比较大,后两个无脑进。
    phrack
        2
    phrack  
       2024-01-23 06:31:52 +08:00 via iPhone
    性能几乎没有损失
    setimouse
        3
    setimouse  
       2024-01-23 08:22:21 +08:00
    跟性能没关系。容器不是虚拟机,只是资源上做分组隔离,不影响性能。
    totoro625
        4
    totoro625  
       2024-01-23 08:23:18 +08:00   ❤️ 1
    Nginx 打算放出来了,目前还是 docker 运行

    其他的 docker 都是内部使用,无需对外访问
    而 Nginx 在 docker 运行遇到了几个问题:
    1 、docker stop nginx 修改 docker 参数后,80/443 端口被裸机安装的 Tailscale 抢端口,裸机安装 ginx 兼容性更好一点
    2 、配置文件只有一个/一个文件夹,迁移比较简单
    3 、不修改 docker 配置的情况下,可以很好的支持 ipv6 和 iptables
    sunny2580839896
        5
    sunny2580839896  
       2024-01-23 08:35:41 +08:00
    数据库还是放在外面,数据稳妥
    Greendays
        6
    Greendays  
       2024-01-23 08:38:11 +08:00
    都可以用容器的,基本不会影响到性能。
    cbdyzj
        7
    cbdyzj  
       2024-01-23 08:48:11 +08:00
    都可以用容器的,数据 volume 啥的都有现成的结局方案
    Quarter
        8
    Quarter  
       2024-01-23 08:48:38 +08:00 via Android
    目前来看 除了数据库放 docker 应该都没事,数据库的话有说会影响 IO 的,也有说容器崩溃后导致数据受损不易恢复的,但还是有不少项目直接是 docker 跑的,感觉问题不是特别大
    demoshengxw
        9
    demoshengxw  
       2024-01-23 08:53:26 +08:00 via iPhone
    貌似有状态应用容器化一直是个难题,我们生产环境上千个 pod 都是连阿里的 rds 。
    popil1987
        10
    popil1987  
       2024-01-23 09:02:39 +08:00
    可以,性能有一定损失,但运维简便
    hefish
        11
    hefish  
       2024-01-23 09:04:36 +08:00
    数据库要真是跑容器里引起问题了,那才放容器外。 问题包括 性能啊,可靠程度啊之类的。
    chenqh
        12
    chenqh  
       364 天前
    nginx 没有必要放 docker 吧,apt 安装从来不坏,而且也没有追求新版本的特性,不像数据库
    haython
        13
    haython  
       364 天前
    mysql 也放在 docker 了,4 年了,没啥问题,升级也方便,每天几千万个 sql 执行
    echo1937
        14
    echo1937  
       364 天前
    网络有模式的问题,
    @totoro625 你这个机器是 derp 服务器吗,按道理 tailscale 客户端是不需求 80 和 443 端口的
    totoro625
        15
    totoro625  
       364 天前
    @echo1937 #14 不是 derp

    可能是因为其他机器里面写死了直接访问了 100.xxx.xxx.xxx:443

    # netstat -tunlp | grep 443
    tcp 0 0 100.100.***.***:443 0.0.0.0:* LISTEN 692/tailscaled
    tcp6 0 0 fd7a:***:***:***:443 :::* LISTEN 692/tailscaled
    wu00
        16
    wu00  
       364 天前
    怎么方便怎么来;
    测试环境肯定是全容器化;
    生产环境肯定是能云则云,别想着从这方面给老板省钱,很贱的;
    又上不起云又没专业运维,天王老子来了都是容器一把梭。
    wunonglin
        17
    wunonglin  
       364 天前
    反过来想。

    是使用哪些软件遇到了什么问题从而需要真机部署?
    perfectlife
        18
    perfectlife  
       364 天前
    老实讲 我感觉这三个都没必要放容器里,nginx 有的镜像有时候会有点小问题,没有 yum/apt 安装的兼容性好,mysql/redis 这种部署后基本不动了,容器部署可以但是必要性不强
    MXMIS
        19
    MXMIS  
       364 天前
    Nginx 进 Docker 没啥问题,mysql 和 redis 要是单机用 Docker 也可以,集群还是算了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4683 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:09 · PVG 09:09 · LAX 17:09 · JFK 20:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.