我是来科普下 Docker 是干嘛的,以前一直不知道好处,网上搜出来的介绍完全看不懂

2015-09-09 11:38:16 +08:00
 dbfox
玩具机器人 11:13:16
发现 docker 好爽

ME 11:13:36
怎么爽法

玩具机器人 11:14:17
可以在服务器上安装同一个软件 好几次

ME 11:14:35
那确实很爽
一个 mysql 安装多次
这样比虚拟机有优势

玩具机器人 11:15:04
对啊

ME 11:15:15
虚拟机得运行个 操作系统
这样可以共享一个操作系统
比较爽

玩具机器人 11:16:43
刚刚试了一下, 我装了个 ubuntu 14.10 的虚拟机, 然后装了 lamp 环境, 然后有装了 docker, 在容器里面又装了个 mysql, 然后映射 3307 端口给 mysql 容器, 结果, 两个都可以用

玩具机器人 11:18:33
https://dashboard.daocloud.io
可以看一下这个网站, 你也配置一下看看, 感觉爽死了

ME 11:22:53
多个人共享一台服务器
比较爽

玩具机器人 11:24:50
对, 但是 web 服务器不能搞多个, 只有一个 80 端口
估计有根据域名指向容器的方法, 要研究一下

ME 11:25:37
也可以
用 nginx 做代理
映射到不同的 端口

玩具机器人 11:28:43
我在想 docker 的用途

ME 11:28:53
感觉适合测试环境

玩具机器人 11:29:53
第一想到的就是每个容器里面运行一个完整的项目, 当项目升级的时候, 可以再开一个容器, 把新代码 数据库之类的搞进去
然后启动新容器
如果发现重大 bug, 可以瞬间回退到老版本

玩具机器人 11:30:54
据说 docker 容器的性能几乎没有损耗

ME 11:33:00
太牛逼了
不错
以前一直不知道 docker 的用处
查网上也说不清

玩具机器人 11:34:28
刚出来的, 用处还在挖掘
8910 次点击
所在节点    Docker
22 条回复
Radeon
2015-09-09 11:43:27 +08:00
Prefix Isolation 可以做的事用不着用容器来做
mongodb
2015-09-09 11:51:38 +08:00
玩具机器人 11:18:33
https://dashboard.daocloud.io
可以看一下这个网站, 你也配置一下看看, 感觉爽死了


____

实际上不用 daocloud 也很爽……
chairuosen
2015-09-09 11:52:13 +08:00
不太懂在 docker 里运行 mysql 有啥用, container 不是持久化的,一重启数据丢了咋办
loading
2015-09-09 11:53:11 +08:00
知道虚拟机的快照吗?
增量备份知道吗?

原理也就这样!
dbfox
2015-09-09 11:55:58 +08:00
@chairuosen 只是做个试验
cevincheung
2015-09-09 11:58:28 +08:00
@chairuosen
docker 作为一个虚拟操作系统来运行,与外部系统共享资源,包括存储。
比如设置存储服务器,所有 docker 服务器的母鸡都连接相同的存储接口。运行 docker 时指定共享目录,比如多个运行 nginx 的 docker ,可以共享同一个 /var/www 目录。数据存储在外部。

当然也可以将代码存储在 docker ,设置共享 /data/upload 目录, docker 中设置软连接到自己的 /web/upload 。
项目有新版本?设置一个新的 docker 扔上去,只换了业务代码, upload 上传目录还是在存储服务器上的。
新版本有问题?挂了运行之前的老 docker ,搞定。
chairuosen
2015-09-09 12:01:32 +08:00
@cevincheung 业务代码当然没问题,我说的是 db 。
gaitana
2015-09-09 12:02:58 +08:00
@cevincheung 项目有了新版本,用 docker 扔上去比用 git push 上去有优势吗?速度比 git push 快吗? git push 可以一秒内同步到服务器。

没用过 docker ,纯疑问
gaitana
2015-09-09 12:05:56 +08:00
还有个疑问, docker 怎么解决库依赖的问题的?比如用 docker 包装了一个 mysql 扔到新服务器上,但新服务器没装 mysql 相关的依赖,遇到这种问题怎么解决?
loading
2015-09-09 12:07:03 +08:00
@gaitana
如果所有服务器都要安装一个新库再部署呢?
我说的是 10 台。
9hills
2015-09-09 12:07:55 +08:00
@gaitana docker 包装 mysql 的时候其实是把 mysql 的全部依赖整体都打包了。。所以不用解决依赖问题
9hills
2015-09-09 12:08:38 +08:00
lz 你拿个聊天记录来科普也太没有诚意了吧
9hills
2015-09-09 12:09:23 +08:00
@chairuosen Docker Container 是持久化的, stop 后还可以 start 。
ETiV
2015-09-09 12:11:42 +08:00
@chairuosen 我也曾经有过这样的困惑
但是研究了一下, 就发现 docker 支持挂载外部路径进 container. 所以重要的文件存储还是可以持久的.

包括配置文件啊这些, 也可以通过挂载外部路径来读取. 这样即便是相同的镜像, 运行起来的 container 都可有不同配置.
9hills
2015-09-09 12:16:22 +08:00
@ETiV 其实运行起来的 container ,它也是持久化的。。并不会丢。只是大家喜欢 rm 掉重新起一个##
chairuosen
2015-09-09 12:17:28 +08:00
@ETiV 是的,这些都可以,但总不能 db 写文件吧。。。
@9hills 我是指这个 container 会不会因为某种情况 crash 了就消失了,再从镜像 run 就没了
liuchang0812
2015-09-09 12:24:28 +08:00
@chairuosen you need docker VOLUME , It's used for persistent storage.
ETiV
2015-09-09 12:36:02 +08:00
@9hills 晓得. 但最主要是更换容器镜像(升级个版本啥的), 可以保证外部文件不受影响嘛.


@chairuosen db 写文件? 不是很懂...
est
2015-09-09 12:38:04 +08:00
@cevincheung 那么恭喜你,如果没 docker 跑 2 个 mysql 只是多出一个问题,那么用 docker 跑 2 个 mysql 并且共享目录,变成了 3 个问题。
nine
2015-09-09 13:24:58 +08:00
刚随便看了一眼某个库 49G
完整备份也要好久,我只想知道随着版本更新带来的表结构迁移后用 docker 如何瞬间回到老版本。
另外业务跑出来的新数据怎么整?

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

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

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

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

© 2021 V2EX