最近在学习 Docker 相关的知识,准备拿自己家里的小破服务器练练手,有个问题一直困扰我,希望各 V 友不吝赐教。
PS:本人不懂后端,有可能描述不当或理解错误的地方,见谅。
构建 Docker 容器时,应该按什么粒度来构建?
来个例子说明下:
在一台服务器上,部署 A 和 B 两个依赖 LNMP(以 P 为例,A 依赖 Python2,B 依赖 Python3),应该按下面哪种方式部署比较好呢:
或者上述方法都不对,那有没有什么最佳实践方式? (家用服务器 /个人服务器环境下)
1
blackeeper 2019-09-20 14:25:20 +08:00
明显是 3 啊,官方给的建议就是:单个应用程序就是一个 docker 容器。当然很特殊的应用程序除外。
|
2
huxins 2019-09-20 14:28:34 +08:00
看想用 docker 干哈,快速部署,环境隔离,集群扩容,根据需求来
|
3
jaynos 2019-09-20 14:28:58 +08:00
同上, 除特殊情况下应该一个容器内只包含一个服务. 然后通过 docker-compose 来让容器互联
|
4
chairuosen 2019-09-20 14:31:44 +08:00
3。 一般大规模应用 docker 的企业,nginx,mysql,python,分别由不同部门负责。没有这种都打进一个镜像的场景。
|
6
aerzha OP @chairuosen 多谢,那服务器是全部 docker 化好些呢,还是部分选择 docker 化呢,比如 minidlna 有没有必要用 docker,选择是否 docker 的标准是什么
|
7
chairuosen 2019-09-20 14:46:39 +08:00
@aerzha 我觉得是无状态 /需要水平扩展的服务都适用于 docker,当然也有人用 docker 装 mysql,没搞过不太懂。
|
8
wly19960911 2019-09-20 14:52:07 +08:00
@chairuosen #7 这个是用 volumn 挂载数据进去的,很容易,也不需要管依赖,平时也一样用。
|
9
mikeguan 2019-09-20 15:01:28 +08:00 via Android 1
现在的 lnmp 的 p 是指 Python 了吗?
算了,还是世界和平吧 |
11
BlackHole1 2019-09-20 15:09:54 +08:00 via Android
3
|
12
aerzha OP @mikeguan 哈哈,这俩我都不懂,因为我只知道 Python 分两个版本,才拿出来举例,要是 PHP 也有多个版本,当然就是选择世界上最好的语言了
|
13
AnnieHall 2019-09-20 15:29:53 +08:00
自己玩 docker compose 挺合适的
|
14
aerzha OP @chairuosen 举个例子,docker 安装 nextcloud,直接“docker pull docker.io/nextcloud”命令,这种方式是不是容器中就包含了 LNMP,要想把 Nginx,MySQL 等分离,就要使用 docker compose ?
|
15
chairuosen 2019-09-20 16:10:19 +08:00
@aerzha 前半句对,这个镜像貌似是打包好了所有依赖服务。后半句,如果你想把 nginx mysql 放在 docker 里用,并且和业务代码一起打包成一个完整的服务,让别人一键安装启动好。就用 docker compose。 但是,个人理解,这种场景较少,一般是你开发一套东西,想让另一个人在完全不熟悉的情况下跑起来。适用于企业级卖软件,个人接私活。 运行时想 debug 或者调调参数不方便。 实际互联网公司自己产品没这样部署的。
|