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

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

  •  
  •   xiaowowo · 341 天前 · 3302 次点击
    这是一个创建于 341 天前的主题,其中的信息可能已经有所发展或是发生改变。

    运行在容器中有什么好处

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

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

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

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

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

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

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

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