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

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

  •  
  •   aerzha · 30 天前 · 2325 次点击

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

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