V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
michael2016
V2EX  ›  程序员

面试题:为什么 MySQL 不要使用 Docker 部署。。。。

  •  
  •   michael2016 · 13 天前 · 17992 次点击

    如果你去找工作,遇到我问你以下几个问题如何回答:

    1. 在大厂 MySQL 是不能用 Docker 的,为什么?
    2. 今天业务被 DDoS 了,你如何在 10 分钟内解决问题?
    3. 如果被爬虫爬了,你应该如何解决?
    4. RAG 和 Agent RAG 有什么区别?
    第 1 条附言  ·  13 天前
    问题一再换个表达方式:在生产环境中不推荐使用 docker 运行 MySQL ,简单简述一下你的经验和最佳实践。
    161 条回复    2025-09-22 10:59:46 +08:00
    1  2  
    deplives
        101
    deplives  
       12 天前
    @Sendya #100 你帮我算啥啊,op 确实张嘴 5w qps 还要一个人来负责搞定这些问题啊
    Sendya
        102
    Sendya  
       12 天前 via Android
    @deplives 哈哈就是帮你把 op 的 5w 具象化一下,给其他人参考
    deplives
        103
    deplives  
       12 天前
    @Sendya #102 所以我不就说,张口闭口 5w qps ,他怕是都不知道意味着什么
    UN2758
        104
    UN2758  
       12 天前
    这个不是月经贴吗,RAG 和 agent 也是和 ai 应用岗位强相关了,这个问题类似我问你 word2vec embedding matrix 和 llm 里的 embedding matrix 区别在哪?你觉得有啥普通面试场景上的意义吗
    qianyidui5
        105
    qianyidui5  
       12 天前
    如果你上面的问题都回答上了 面试官也很满意 邀请你入职
    面试官问你还有什么想问我的吗
    你问面试官你们公司服务有监控没
    面试官说他们从来不装监控
    你还去这家公司吗?
    wuhanchu
        106
    wuhanchu  
       12 天前 via iPhone
    可以。但是会增加风险
    mightybruce
        107
    mightybruce  
       12 天前
    docker 不等同于 k8s, 如果是能运用 k8s operator 并解决可能出现的问题,那么没问题。

    单独用 docker 的确很难做到 mysql 高可用 高可靠的
    forblackking
        108
    forblackking  
       12 天前   ❤️ 5
    @deplives #96 看到 op 在上面批判大伙对待技术的态度,好奇翻了下 op 的帖子,提到过是在做运营咨询的,释然了...
    jhdxr
        109
    jhdxr  
       12 天前
    > 在大厂 MySQL 是不能用 Docker 的,为什么?
    今年是 2025 年吧?哪个大厂?

    容器化不是银弹,问 mysql (或者大部分传统的 stateful 服务)跑在容器里有啥缺点我觉得更合适一些
    justdoit123
        110
    justdoit123  
       12 天前
    容器一定是有额外开销的。对于这种有状态的服务。用普通的容器化方案能更快、更好的实现高可用与高稳定性吗?我感觉弊大于利。

    抛开服务负载谈这些都是无效讨论。我感觉面试官没把问题问好。

    另外,就算是大厂,也有小负载、低价值的服务。那么也就没必要什么服务都上岗上线,这时候直接使用 docker/k8s 搭建一个 mysql ,这才是务实的做法。
    9hills
        111
    9hills  
       12 天前   ❤️ 1
    @michael2016 某度、某里都实现了核心业务(包括数据库)百分之百容器化,做容器圈的都知道。

    请问他们的 QPS 是不是超过了 5 万?
    Fallever
        112
    Fallever  
       12 天前
    刚好在 cnblogs 首页看到这个
    https://www.cnblogs.com/12lisu/p/19093514
    RedisMasterNode
        113
    RedisMasterNode  
       12 天前
    @laminux29 哈哈翻下来至少到 8 楼只有你是认真回答问题的,点赞!
    Feiex
        114
    Feiex  
       12 天前   ❤️ 3
    @michael2016 #40 这个回答太傲慢油腻了。
    我在京东就职时候,整个业务线都用的是容器化数据库( jed ),es 、hbase 也都是容器化部署。
    当前就职公司也是在逐步下线存量物理机。

    那你所谓的“大厂 MySQL 是不能用 Docker 的”是站不住脚的:
    为什么物理机就稳定安全了,容器化就不稳定安全了?
    物理机架构运维成本相比一键弹性安装的自助化容器岂不是更复杂,成本更高,为什么说是“降低了运维成本”?
    “sla 没有保证”哪家云服务敢不保证容器实例的 SLA ,容器的宕机保护、缩容保护、延迟删除,物理机能做到哪个?
    为什么需要区分设置 prod/stage/test ?为什么这些环境的实例配置做不到软硬件规格统一?很容易配置出错啊

    通篇看来,lz 工作中使用的基础设施只是接入了多家公有云,也仅仅有面向公有云的发布经验,这些独立的云部门不仅超售严重,而且出于成本考量几乎不会做资源隔离。而当前超大规格宿主机完全可以做到各个容器独享各自主板资源,就这方面,我对 lz 的评价是:“年轻有时间还是要多深度学习。”
    huage
        115
    huage  
       12 天前
    我在宇宙第一大保险公司的科技公司面试过上百人,说真的:面试问题很随机或者说随意,很多问题不是要一个标准答案,而是看你如何回答
    kevinxzhao
        116
    kevinxzhao  
       12 天前
    看到标题,就想那个垃圾面试官问的,k8s 中跑的都好几年了。
    BadAngel
        117
    BadAngel  
       12 天前   ❤️ 1
    @michael2016
    1 、既然稳定性和数据安全说第一位,就不要选择本地盘,一旦坏了数据就没了,本地盘那一点性能优势和价格优势并不存在。
    2 、为啥 DDos 在云厂这里一个产品就能闭环,你考虑的攻击应对只需要买产品就行了,你真的要考虑自行应对,只能说运维工程师的价格买不来安全工程师的服务,可以省钱,但代价是什么。
    3 、反爬虫也早就是云厂的标准产品能力了,只能说你还是小厂或者传统运维的思维方式了,当领导没有大局观可不行。
    4 、我不懂就不献丑了。

    为啥大家反对的居多,还是爹味太重,一看就积重难返,大家也不用跟这位领导掰扯了,没意义。
    Ketteiron
        118
    Ketteiron  
       12 天前
    @michael2016 #33
    >把你的客户数据、商品信息都爬走了
    这咋了,防又防不住。能做的工作也就:
    前端混淆+接口加解密,难度 3 ,拦下 90%
    风控系统,难度 5 ,拦下 99%
    指纹验证 + 特征判断,难度 7 ,拦下 99.9%
    人机验证,难度 9 ,拦下 99.99%
    但是不管怎么做都不是 100%,京东淘宝美团这些应用再怎么加固能拦下逆向扣 so 解密吗,接口数据不照样被各种倒手。
    以数据为核心的业务,创立之初就要设想数据被全部爬走的最坏打算,如果无法承受,那么就不该立项。
    crackidz
        119
    crackidz  
       12 天前
    最后一个问题一定是你记错了或者打错了,应该问题是 RAG 和 Agentic RAG 的区别。
    FarAhead
        120
    FarAhead  
       12 天前
    @maichael OP 明显不是你说的合格的面试官
    pollux
        121
    pollux  
       12 天前
    如果是新型的分布式数据库,倒是可以容器化的,只好做好底层存储与协议兼容,路由层隔离,如果是传统数据库,容器化并没有提升性能,还引入了不必要的运维排错风险,尤其是在大厂的 SLA 严格考核下,专机专用也是优良传统。
    wheat0r
        122
    wheat0r  
       12 天前
    @shenlanAZ #42 我真见过最后一种,找我要一个虚拟机,分配 64GB 内存,说是拿来跑数据库。
    我说这个库就跑一个会员卡系统,并发还不到 10 个,怎么测出来的数据库内存需求。
    他说他们的测试服务器 64GB 内存 SQL Server 长期运行会占满,肯定不能更少了。
    我问有没有使用限制实例的内存占用。
    他问怎么限制…
    ivvei
        123
    ivvei  
       12 天前
    为什么?因为菜
    shenlanAZ
        124
    shenlanAZ  
       12 天前
    @wheat0r 我之前在某国央企工作过,也是遇到过类似的情况,有两种情况

    1. 他们那种组织架构就不允许弹性伸缩,所以一次性会拿很大的配额保证后面一定是够用的,或者挪作他用。
    2. 因为技术问题写的程序有内存泄露的问题,不敢去动代码或者别的什么原因,最后的解决办法就是定时重启...
    siteshen
        125
    siteshen  
       12 天前
    1. 不知道啊,我一直都用 PostgreSQL ,MySQL 这东西也能火真是没天理。我的建议是不仅是不要用 Docker 部署,更不要部署。
    Amex
        126
    Amex  
       12 天前
    经典命题作文面试
    SeaSaltPepper
        127
    SeaSaltPepper  
       12 天前
    @Kumo31 点了,看标题以为是讨论贴,进来一看 OP 一股说教的语气,整的好像我是来面试的一样...... 而且 OP 反复强度自己维护大规模集群更有发言权,然而还是不承认这种问题毫无含金量反复在评论区给自己找补
    mengdodo
        128
    mengdodo  
       12 天前   ❤️ 1
    因为沙雕人 docker run mysql 时没有挂载文件,data 文件全在容器内。删了容器后发现数据库也没了,所以它们在恼羞成怒后也不许别人使用。
    cyrivlclth
        129
    cyrivlclth  
       12 天前
    为什么大厂不用 docker 部署 MySQL ?答:docker 协议问题,不过我们可以用 k8s, containerd, podman 来代理
    yb2313
        130
    yb2313  
       12 天前
    @forblackking 这下一切的疑问都有答案了
    mayday526
        131
    mayday526  
       12 天前
    @junkk 是 io 问题,wsl 也有这个问题,运行的时候会把 php 挂载目录的文件读取到容器/虚拟机环境,是跨文件系统的,贼慢。你直接把 php 文件复制到容器里就会快多了,但是开发环境这么搞太麻烦了
    Vesc
        132
    Vesc  
       12 天前
    如果被 DDoS 了又没有购买清洗服务,哪个神仙能 10 分钟内解决?
    jadeborner
        133
    jadeborner  
       12 天前
    第二个问题也太抽象了,跟开发有什么关系
    guanzhangzhang
        134
    guanzhangzhang  
       12 天前
    能问出 mysql 不适合容器的,我估计 nginx 容器都照样玩不转的,云厂商的 rds 实例一定是本地盘吗,既然人家存储计算分离,docker run 选项全部和 host 一样-v bind mount 本地盘/块存储挂载路径/rdma 的路径之类的有啥问题,不会没有加选项用到只用 rootfs 隔离功能吧。
    增加运维成本?,sock 文件落地的目录挂载出去不会吗,容器起不来? mysql 实体进程起不来你不也是 cd 进目录和用 mysql 相关命令看吗,mysql 容器起不来不会 docker run --rm -ti -v data:/var/lib/mysql --entrypoint bash mysql_image_name 进去查和修复吗。
    按照你说的,那我也来喷下 java ,jdk8 不识别 cgroup 限制,不适合上容器,java 好多服务启动内存很高,Pod 容器启动的时候容易超过 limit 被杀掉😅,什么,我一个 java 开发还需要学这么多容器,那我还上容器干啥
    aiyayaya
        135
    aiyayaya  
       12 天前
    我有一个具体的案例, 因为安全问题我需要修改完配置之后重启 docker, 这时候如果是容器的 MySQL, 不得不面临重启 MySQL.
    KagurazakaNyaa
        136
    KagurazakaNyaa  
       12 天前
    自己菜不要怪工具难用
    我就是运维岗位,我们团队都习惯把数据库容器化部署,无论是数据可管理性还是可观测性还是部署的方便程度都要比手工部署好。同时 cicd 也好写,配置可以直接部署到自己构建的镜像里,灰度和实例轮替(依靠主备和 binlog )也都比直接手工部署要好,遇到问题也容易复现和解决
    salmon5
        137
    salmon5  
       12 天前
    等等,docker 安装 mysql 很难吗?应届生都能轻松搞定好吧
    探讨的必要性,要看场景和公司人力资源投入
    encro
        138
    encro  
       12 天前
    1.在大厂 MySQL 是不能用 Docker 的,为什么?

    因为大厂在用 k8s

    2.今天业务被 DDoS 了,你如何在 10 分钟内解决问题?

    切 ip 就行,刚好域名解析 10 分钟

    3.如果被爬虫爬了,你应该如何解决?

    开启 waf

    4.RAG 和 Agent RAG 有什么区别?

    Agent RAG 属于多步推理和工具链调用。
    wangtian2020
        139
    wangtian2020  
       12 天前
    我就用我就用,气死你。我不仅用 docker ,我还用不用 mysql 用 sqlite
    yuanxing008
        140
    yuanxing008  
       12 天前
    第一个问题 是哪个大厂?发一下好避雷
    tairan2006
        141
    tairan2006  
       12 天前
    @aiyayaya live-restore
    shiny
        142
    shiny  
       12 天前
    3. 如果被爬虫爬了,你应该如何解决?
    移交法务,报警抓起来
    rb6221
        143
    rb6221  
       12 天前   ❤️ 1
    是不是合格面试官的一个标准,提问方式。换成这样就好了:
    你认为 MySQL 能不能用 Docker ,如果能有什么优点,如果不能有什么缺点
    这种很明显就是开放题。
    abcgoodwei
        144
    abcgoodwei  
       12 天前
    @EastLord 第一个问题 我问过我在狗东的同学,他们是容器化的。
    calpes
        145
    calpes  
       12 天前
    首先,大厂的 db 是容器化的;
    其次,我不支持“随便拉个 mysql 容器起来就能直接用”这种说法,基本上各大厂都有类似 RDS 的服务,也都容器化了,但是其中从服务器的规格到定制的分布式存储与编排系统,恐怕除了 db 那个进程的容器以外,所有的基础设施都跟 crud boy 眼中的开箱即用容器服务没什么关系了;
    所以现实情况是,db 在大厂是个类似 RDS 的服务,有专门的技术团队,按照专门的规格和标准进行开发和保障,其中也许用到了容器化技术来支持伸缩弹性等功能,但是与标准意义上的开箱即用容器服务还是相差甚远。
    在大厂,一切将基础组件自运维的行为都是不提倡的,你把 db 容器与业务容器混布的行为那是弱智,你不混布单独抽集群做特殊优化保障,那你为什么不用场内的类 RDS 服务?还是说明你蠢。
    jimages
        146
    jimages  
       12 天前
    坐标,某大厂( batamd )之一。

    独享容器/ 24 核,供参考。
    manhere
        147
    manhere  
       12 天前
    “被 DDoS 在 10 分钟内解决问题”,有这能力的不用去面试上班
    AkinoKaedeChan
        148
    AkinoKaedeChan  
       12 天前 via iPhone
    可能有两个原因,一个是因为用的是 Kubernetes 另一个可能是不用 MySQL…
    dorothyREN
        149
    dorothyREN  
       12 天前
    在大厂 MySQL 是不能用 Docker 的,为什么?
    你就回答说: 我没在进过大厂
    notwaste
        150
    notwaste  
       11 天前 via iPhone
    近几个月最能学到东西的一个帖子
    ainming
        151
    ainming  
       11 天前
    要讨论问题就好好讨论,装什么面试官,搁论坛招聘啊?那先开个岗位待遇。
    被指出问题了就自己其实是夸张,只值得被群嘲。
    hitboy
        152
    hitboy  
       11 天前
    全部围观完,OP 爹味溢出屏幕了
    aiyayaya
        153
    aiyayaya  
       11 天前
    @tairan2006 关键 live-restore 也要在 daemon.json 的配置生效, 还是要重启 docker
    tairan2006
        154
    tairan2006  
       11 天前
    @aiyayaya 最开始就要配置上啊,包括日志的滚动……
    aiyayaya
        155
    aiyayaya  
       11 天前
    @tairan2006 所以说, 一般的开发场景, 数据库这种, 尽量二进制安装, 配合 systemd 管理.
    tairan2006
        156
    tairan2006  
       11 天前
    @aiyayaya 二进制安装升级很麻烦
    aiyayaya
        157
    aiyayaya  
       11 天前
    @tairan2006 这个看情况, 我升级单台, 抛除下载文件的时间, 基本上五分钟搞定 .
    二进制包放到 /usr/local/ 软链 /use/local/mysql , 数据目录, 日志目录也用软连, 每次更新版本, 重新软链一下就行了, 再 mysqlupdate 一下.
    aiyayaya
        158
    aiyayaya  
       11 天前
    6 年运维经验, 大大小小的数据库都见过, 乱七八糟的部署方式都有. 做好文档, 做好数据归档和定时备份
    比起不同方式带来的不同使用体验, 做好前者更重要.
    下次, 面试官问你为什么不用 docker 部署 MySQL, 你应该问他为什么不用 PostgreSQL 😁
    jiayouzl
        159
    jiayouzl  
       10 天前
    docker 不能部署 mysql ?靠,我都部署好多年了,从 mysql5 就开始这样用很方便!数据跟容器分离就行。
    Dlin
        160
    Dlin  
       10 天前
    各位大佬的回复让我收获良多,多点这样子的辩论吧
    michael2016
        161
    michael2016  
    OP
       9 天前
    @datoujiejie221 👍🏻
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2096 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:02 · PVG 13:02 · LAX 22:02 · JFK 01:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.