小菜鸟一枚,最近苦于配置各种环境,想学习一下 docker 的使用,有几个问题咨询一下大家
背景:
一个 web 应用包含以下几部分,授权服务,业务服务,数据库服务,RabbitMQ 服务,Logstash 服务,redis 服务,Elasticsearch 服务。
问题:
目前情况是每一个服务部署在单独的服务器( EC2 )上,管理起来很麻烦。
咨询:
那我是不是可以把每一个服务都放到一个 Docker 容器里面,放在一台大的机器或者直接托管在现有的云容器服务上,这种用法正确吗?
因为我们不需要大规模的拆分业务服务做分布式集群,用 Docker 是不是大材小用,有点困惑。 希望各位大佬给点意见,我这方面经验确实太少。
1
leorealman 2019-06-28 11:45:38 +08:00 1
Docker 只是提供了一个应用运行的环境,其实你用物理机、虚拟机、云主机都可以运行你的应用,只不过每次都要安装运行环境(解释器、依赖包等)。Docker 就是把安装运行环境给打包了,你可以为每个应用制作对应的 Docker 镜像,最主要的作用还是节省资源和方便快速迭代开发。
|
2
anubu 2019-06-28 11:54:06 +08:00 1
生产中是这么使用的。
每个服务一个容器,整个项目可以放在一个统一的 docker-compose 文件里管理。 不存在大材小用的问题,和分布式集群部署没有关系,任何需要做隔离部署的场景都可以考虑使用 docker。 你这边的迁移主要还是考虑性能问题,毕竟之前是每个服务独占服务器的。 |
3
sxw11 OP @leorealman @anubu 感谢大佬们指点
|
4
rqxiao 2019-06-28 13:11:37 +08:00 1
dokcer-compose 多容器编排就可以你的需求
|
5
pmispig 2019-06-28 13:55:40 +08:00 1
放在一台大的机器或者直接托管在现有的云容器服务上。后者基本上不行,前者勉强可以。但是你作为一个新手来说,也是墙裂不推荐你这样做的。一个不好,一个服务就把 CPU 占光,其他服务 GG
|
6
doco 2019-06-28 15:30:22 +08:00 1
我最近也在考虑这个事情...不过我的比较简单, 只有 nginx, node, mongodb 和 vpn, 主要是为了方便迁移, 不知道该每个应用都弄一个 docker 还是合到一起.
|
7
xfriday 2019-06-28 15:33:25 +08:00 1
上 k8s / swarm 容器编排
|
8
ri0day 2019-06-28 15:33:40 +08:00 1
第一,生产环境或不要把这些服务放在一个机器上,docker-compose 显然不适合你生产环境使用.
第二, 现在很少有单纯只用 docker 去跑一套企业级的应用 一般都是放在 kubernetes 上跑. 建议你先一步步来: 把你提到的这些组件先一个个迁移到 docker 上能运行 然后在测试环境用 docker-compose 把这些服务串起来 有了前面的知识积累,了解一下 kubernetes 的 pod/deploment /service /configmap/pvc /ingress 这些概念以后,最后把这些组件部署到 kubernetes 上. |
9
abcdocker 2019-06-28 15:43:00 +08:00 1
之前写过一个 K8S 容器日志收集,你可以考虑一下。 将应用部署在 k8s 上
https://i4t.com/3642.html K8s 容器日志实时收集 FileBeat+ES+Kibana https://i4t.com/3211.html K8S 企业集群 |
10
EasyProgramming 2019-06-28 15:44:22 +08:00 1
同 7 楼,推荐做容器编排
|
11
Chinsung 2019-06-28 15:44:29 +08:00 1
生产环境的话,最起码的防单点,也不适合你用 docker 全部署在一台机器上
你要是觉得依赖和环境配置麻烦,可以自己搞个 docker 的基板镜像,里面搞上环境依赖和应用,部署和你现在一样,每台机器跑个 docker 你要是觉得部署起来麻烦,手动步骤过多的和复杂的可以考虑自动化部署,或者想办法换一种部署方式和提升部署效率 像你这种,负载还可以的话,redis 和 mq 这两个可以放一台机器上,灵活的考虑吧 |