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

不懂就问,关于 Docker 的一些疑惑。

  •  
  •   aerzha · 2019-09-20 14:05:37 +08:00 · 5886 次点击
    这是一个创建于 1652 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学习 Docker 相关的知识,准备拿自己家里的小破服务器练练手,有个问题一直困扰我,希望各 V 友不吝赐教。

    PS:本人不懂后端,有可能描述不当或理解错误的地方,见谅。

    构建 Docker 容器时,应该按什么粒度来构建?

    来个例子说明下:

    在一台服务器上,部署 A 和 B 两个依赖 LNMP(以 P 为例,A 依赖 Python2,B 依赖 Python3),应该按下面哪种方式部署比较好呢:

    1. 两个 Ubuntu 的 Docker 容齐,然后每个里面都安装对应版本 Nginx,MySQL,Python。
    2. 服务器本机安装 LNMP,然后 A,B 容器通过 docker 数据卷使用环境。
    3. 创建 Nginx 容器,MySQL 容器,Python2 容器,Python3 容器..., 然后通过容器互联来使用环境。

    或者上述方法都不对,那有没有什么最佳实践方式? (家用服务器 /个人服务器环境下)

    15 条回复    2019-09-20 16:10:19 +08:00
    blackeeper
        1
    blackeeper  
       2019-09-20 14:25:20 +08:00
    明显是 3 啊,官方给的建议就是:单个应用程序就是一个 docker 容器。当然很特殊的应用程序除外。
    huxins
        2
    huxins  
       2019-09-20 14:28:34 +08:00
    看想用 docker 干哈,快速部署,环境隔离,集群扩容,根据需求来
    jaynos
        3
    jaynos  
       2019-09-20 14:28:58 +08:00
    同上, 除特殊情况下应该一个容器内只包含一个服务. 然后通过 docker-compose 来让容器互联
    chairuosen
        4
    chairuosen  
       2019-09-20 14:31:44 +08:00
    3。 一般大规模应用 docker 的企业,nginx,mysql,python,分别由不同部门负责。没有这种都打进一个镜像的场景。
    aerzha
        5
    aerzha  
    OP
       2019-09-20 14:31:53 +08:00
    @huxins 没那么高大上,仅想用家用服务器,折腾下 workpress,nextcloud 之类的
    aerzha
        6
    aerzha  
    OP
       2019-09-20 14:34:32 +08:00
    @chairuosen 多谢,那服务器是全部 docker 化好些呢,还是部分选择 docker 化呢,比如 minidlna 有没有必要用 docker,选择是否 docker 的标准是什么
    chairuosen
        7
    chairuosen  
       2019-09-20 14:46:39 +08:00
    @aerzha 我觉得是无状态 /需要水平扩展的服务都适用于 docker,当然也有人用 docker 装 mysql,没搞过不太懂。
    wly19960911
        8
    wly19960911  
       2019-09-20 14:52:07 +08:00
    @chairuosen #7 这个是用 volumn 挂载数据进去的,很容易,也不需要管依赖,平时也一样用。
    mikeguan
        9
    mikeguan  
       2019-09-20 15:01:28 +08:00 via Android   ❤️ 1
    现在的 lnmp 的 p 是指 Python 了吗?

    算了,还是世界和平吧
    EricXuu
        10
    EricXuu  
       2019-09-20 15:07:54 +08:00
    @mikeguan #9 php 是世界上最好的语言
    BlackHole1
        11
    BlackHole1  
       2019-09-20 15:09:54 +08:00 via Android
    3
    aerzha
        12
    aerzha  
    OP
       2019-09-20 15:20:59 +08:00
    @mikeguan 哈哈,这俩我都不懂,因为我只知道 Python 分两个版本,才拿出来举例,要是 PHP 也有多个版本,当然就是选择世界上最好的语言了
    AnnieHall
        13
    AnnieHall  
       2019-09-20 15:29:53 +08:00
    自己玩 docker compose 挺合适的
    aerzha
        14
    aerzha  
    OP
       2019-09-20 15:34:50 +08:00
    @chairuosen 举个例子,docker 安装 nextcloud,直接“docker pull docker.io/nextcloud”命令,这种方式是不是容器中就包含了 LNMP,要想把 Nginx,MySQL 等分离,就要使用 docker compose ?
    chairuosen
        15
    chairuosen  
       2019-09-20 16:10:19 +08:00
    @aerzha 前半句对,这个镜像貌似是打包好了所有依赖服务。后半句,如果你想把 nginx mysql 放在 docker 里用,并且和业务代码一起打包成一个完整的服务,让别人一键安装启动好。就用 docker compose。 但是,个人理解,这种场景较少,一般是你开发一套东西,想让另一个人在完全不熟悉的情况下跑起来。适用于企业级卖软件,个人接私活。 运行时想 debug 或者调调参数不方便。 实际互联网公司自己产品没这样部署的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4522 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 10:00 · PVG 18:00 · LAX 03:00 · JFK 06:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.