
对于简单系统:
对于复杂系统:
对于复杂系统:
对于简单系统:

客户端访问不同微服务,这些服务又会调用其他微服务

所有请求都从API网关走
基于Linux内核的Namespaces、Control groups、Union file systems技术对进程进行封装隔离,属于操作系统层面的虚拟化技术,被隔离的进程独立于宿主机和其他进程,称为容器
docker在容器的基础上,从文件系统、网络、进程隔离进行了进一步的封装,极大的简化了容器的创建和维护


| Docker | 虚拟机 | |
|---|---|---|
| 启动速度 | 快 | 慢 |
| 复杂度 | 对基础设施依赖低 | 部署复杂度高,面临基础设施兼容性问题 |
| 运行性能 | 在内核中实现,性能接近原生部署 | 性能较差 |
| 可控性 | 依赖简单,与进程无本质区别 | 依赖复杂 |
| 体积 | 与业务发布版本大小相近 | 独立的操作系统,体积为GB级别 |
| 资源利用率 | 高 | 低 |
| 资源隔离 | 较弱 | 隔离性强 |
| 安全性 | 低 | 高 |
传统的容器只解决了容器执行的问题,而docker提供了一套构建->分发->执行的实现


docker使用C/S架构,客户端通过API与Docker daemon通信,进行构建、分发、执行的工作
监听Docker API请求,管理镜像,容器,网络,数据卷等。还可以同其他daemon进行通信来管理集群服务
是用户与Docker交互的主要方式,可以通过docker命令的形式,也可以通过restful API的形式与一个或多个daemon进行通信
主要用于存放镜像,可以使用公有的docker hub,也可以搭建私有仓库,类似于github管理代码