Docker容器技术:拆分系统、管理服务与保存状态
1. 系统拆分为微服务容器
在使用Docker时,有两种方式可以构建容器:将容器作为一个整体(类似传统服务器),或者将系统尽可能拆分,使每个容器只运行一个“服务”,并通过链接将所有容器连接起来。
1.1 容器启动与“一容器一服务”原则
容器启动时类似于主机,会初始化一些服务,如cron和sshd,这对于刚接触Docker的工程师进行初始演示很有用。然而,这种方式是否违反“一容器一服务”的微服务原则在Docker社区存在争议。支持类主机镜像方法的人认为,容器仍然可以为其运行的系统完成单一离散功能,因此不违反该原则。
1.2 拆分系统的好处
在Docker中,通常建议将系统拆分为多个容器,每个容器运行一个服务。这样做的主要原因是通过单一职责原则更容易分离关注点。如果一个容器只做一项工作,那么在将该容器投入开发、测试和生产的软件开发生命周期时,就可以减少对其与其他组件交互的担忧,从而实现更敏捷的交付和更具扩展性的软件项目。不过,这也会带来管理开销,因此需要根据具体用例考虑是否值得。
1.3 拆分系统的实践
下面通过一个简单的PostgreSQL、NodeJS和Nginx应用示例来说明如何拆分系统:
- 整体式Dockerfile的问题 :
FROM ubuntu:14.04
RUN apt-get update && apt-get install postgresql nodejs npm
超级会员免费看
订阅专栏 解锁全文
114

被折叠的 条评论
为什么被折叠?



