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

docker 里面运行 mysql 与单独安装 mysql 资源(内存)占用差距大吗?

  •  1
     
  •   hujianxin · 2016-05-09 09:42:54 +08:00 · 13631 次点击
    这是一个创建于 3119 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚开始使用 docker, 感觉非常方便. 1, 在学习新软件的时候用处非常大, 例如, 我最近需要学习 oracle, 但是 ubuntu 下面安装 oracle 11g 非常麻烦, 需要下载大的安装包, 需要注册 oracle 网站, 说不定安装过程中还会出现什么问题(反正我在 windows 下面安装 oracle 超级困难, 老是有很多小毛病). 但是使用 docker 就无比轻松的解决了这个问题. 2, 最近导师让我完成一个 spark 的项目, 实验室三台低配服务器, 安装 spark 集群非常麻烦, 需要操作系统的 ip 配置, 文件夹配置都是一样的, 而且组网什么的也挺麻烦(刚买的服务器, 我对着一块很不熟). 服务器的开关机比正常的电脑慢很多, 等等问题. 同样, 使用虚拟机来建集群挺麻烦的, 不过相比实体机好多了. 但是, docker 更方便, 占用资源更少.

    虽然我知道 docker 占用资源比 virtualbox 少,但是我没有一个具体的概念, 它到底能少多少.

    例如, 同样在一台 ubuntu 上面跑 mysql, 同样的数据运行情况, 单独安装 mysql 资源占用与 docker 运行 mysql 占用差距很大吗? 大约差多少呢?

    请教懂得大大给我解答以下.

    小弟有一个低配vps, 1g内存的, 不太敢用docker(因为不懂docker的资源占用情况.)

    第 1 条附言  ·  2016-05-09 10:17:46 +08:00
    我说的太罗嗦了, 把一下自己没用的思考放进来了, 大家不要收到影响, 我问的其实就是资源占用问题:)
    15 条回复    2016-05-09 22:07:59 +08:00
    ryd994
        1
    ryd994  
       2016-05-09 10:04:34 +08:00
    除了启停不一样之外
    资源占用几乎完全一样
    前提是你用的 overlayfs
    lvm-loop 的性能就很差了
    cpu 和内存都是一样的
    hrong
        2
    hrong  
       2016-05-09 10:06:57 +08:00 via Android
    你都用了而且已经得出结论“感觉非常方便”,可是看你语气又像没用过,写那么多真心不知道你想问什么和你问问题的目的
    hujianxin
        3
    hujianxin  
    OP
       2016-05-09 10:11:39 +08:00
    @ryd994 多谢多谢. 这样的话, 个人网站(mysql), 跑在 1g 内存的 vps 上, 两者差距应该不是很大了?
    hujianxin
        4
    hujianxin  
    OP
       2016-05-09 10:14:57 +08:00
    @hrong 我只会简单的使用, 真心感觉挺方便的, 没啥经验, 就是自己在电脑上学习学习挺方便的. 我举的那两个例子也看不出我高端来. 这两个例子几乎没用到什么 docker 的高端知识, 只是 pull 下来, 启动一下. 然后 ssh 到上面去. 顶多用一下 docker cp 这样的命令.
    ryd994
        5
    ryd994  
       2016-05-09 10:17:36 +08:00
    docker 本来目的就是为了简化应用的部署啊
    你看情况再改改 mysql 的配置咯
    hujianxin
        6
    hujianxin  
    OP
       2016-05-09 10:18:15 +08:00
    @ryd994 我懂了, 多谢
    atpking
        7
    atpking  
       2016-05-09 11:16:28 +08:00
    需要持久化的东西不太建议 docker 化
    hujianxin
        8
    hujianxin  
    OP
       2016-05-09 11:18:13 +08:00
    @atpking 为什么呢?
    caixiexin
        9
    caixiexin  
       2016-05-09 11:44:18 +08:00 via Android
    @hujianxin 因为 docker 容器里的数据在删除实例后是会丢失的。可以考虑把 MySQL 的 docker 实例里数据文件目录 mount 到宿主机的目录。
    hujianxin
        10
    hujianxin  
    OP
       2016-05-09 11:45:36 +08:00
    @caixiexin 明白了, 我知道这个功能, 数据卷功能.
    hcymk2
        11
    hcymk2  
       2016-05-09 12:11:40 +08:00
    一个小 tip 可以用 docker exec 代替 ssh 访问容器。
    wangkangluo1
        12
    wangkangluo1  
       2016-05-09 13:24:11 +08:00
    @caixiexin 但实际生产过程中还是会使用 mysql 的容器来提供持久化,临时性的解决方案可以定制容器的 stop 信号来备份数据, https://labs.ctl.io/gracefully-stopping-docker-containers/
    lichun
        13
    lichun  
       2016-05-09 13:59:55 +08:00
    动手做个验证比较一下结果就出来了啊,搞一搞电脑又不会爆炸!
    Slienc7
        14
    Slienc7  
       2016-05-09 21:35:51 +08:00
    据说严重降低 IO 性能,跑数据库不合适。
    jamiesun
        15
    jamiesun  
       2016-05-09 22:07:59 +08:00   ❤️ 1
    如果采用桥接模式,因为 iptables 的原因,网络性能损耗大,而且还有个问题,如果你修改了一些网络配置,比如优化内核,需要重启 docker 才能使网络可用,我的一个客户被一个 linux 高手坑过(优化内核后说网络性能提高了,结果 docker 服务网络断了,高手不知所措,我也不知道原因,直接重启 docker ,好了)

    使用 host 模式则不存在这个问题,直接具备宿主机的网络性能,但是没有了链接功能,有得有失, Docker 的新版本好像在网络方面有很大改进,不过我还没来得及深入研究。

    @atpking
    持久化数据可以用本地目录映射或数据卷,这个没有任何问题。

    在一些 docker 平台上,比如灵雀云,可以和简单的为容器挂载一个数据卷,这个数据卷提供备份功能,新建 mysql 实例时,也可以很简单从数据卷备份直接恢复数据。持久化一点副作用都没有。


    @Slienc7 没有你说的降低 IO 性能了,道听途说的还是不要乱讲
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3469 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 10:28 · PVG 18:28 · LAX 02:28 · JFK 05:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.