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

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

  •  
  •   dbfox · 2015-09-09 11:38:16 +08:00 · 8893 次点击
    这是一个创建于 3369 天前的主题,其中的信息可能已经有所发展或是发生改变。
    玩具机器人 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
    刚出来的, 用处还在挖掘
    22 条回复    2017-02-24 14:43:32 +08:00
    Radeon
        1
    Radeon  
       2015-09-09 11:43:27 +08:00
    Prefix Isolation 可以做的事用不着用容器来做
    mongodb
        2
    mongodb  
       2015-09-09 11:51:38 +08:00
    玩具机器人 11:18:33
    https://dashboard.daocloud.io
    可以看一下这个网站, 你也配置一下看看, 感觉爽死了


    ____

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

    原理也就这样!
    dbfox
        5
    dbfox  
    OP
       2015-09-09 11:55:58 +08:00
    @chairuosen 只是做个试验
    cevincheung
        6
    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
        7
    chairuosen  
       2015-09-09 12:01:32 +08:00
    @cevincheung 业务代码当然没问题,我说的是 db 。
    gaitana
        8
    gaitana  
       2015-09-09 12:02:58 +08:00
    @cevincheung 项目有了新版本,用 docker 扔上去比用 git push 上去有优势吗?速度比 git push 快吗? git push 可以一秒内同步到服务器。

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

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


    @chairuosen db 写文件? 不是很懂...
    est
        19
    est  
       2015-09-09 12:38:04 +08:00
    @cevincheung 那么恭喜你,如果没 docker 跑 2 个 mysql 只是多出一个问题,那么用 docker 跑 2 个 mysql 并且共享目录,变成了 3 个问题。
    nine
        20
    nine  
       2015-09-09 13:24:58 +08:00
    刚随便看了一眼某个库 49G
    完整备份也要好久,我只想知道随着版本更新带来的表结构迁移后用 docker 如何瞬间回到老版本。
    另外业务跑出来的新数据怎么整?
    god
        21
    god  
       2015-09-09 14:01:50 +08:00 via iPad
    @9hills diff docker-persistent-container
    HowToMakeLove
        22
    HowToMakeLove  
       2017-02-24 14:43:32 +08:00
    @cevincheung 那这样和 GIT 感觉一样啊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5401 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:13 · PVG 15:13 · LAX 23:13 · JFK 02:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.