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

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

  •  
  •   michael2016 · 3 天前 · 16941 次点击

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

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

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

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

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

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

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

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

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

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

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

    因为大厂在用 k8s

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

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

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

    开启 waf

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

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

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