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

2016-05-09 09:42:54 +08:00
 hujianxin

刚开始使用 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的资源占用情况.)

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

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

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

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


@Slienc7 没有你说的降低 IO 性能了,道听途说的还是不要乱讲

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/277260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX