优点
- 隔离性,docker实现了 用户、进程、文件、资源、网络及信号的隔离,可以这么说,docker容器内部是一个崭新的独立的操作系统,与虚拟机相似,但相对于虚拟机的硬件级别虚拟化 docker基于系统的轻量级虚拟化,更轻量级。
- 移植性,docker在Linux所有发行版(内核>=3.8版本)、Windows7、10、server等x64系列均可运行,在Ubuntu运行最佳,其余操作系统可通过其他方式使用docker
- 快捷部署,docker通过dockerfile的方式实现便捷部署,统一了不同应用之间的管理指令,且保证了测试和生产环境的一致性
- 轻量级,分两个方面
- 第一个是关于docker容器化,相对于类vm等虚拟机 docker资源消耗更小,启动和唤醒速度更加敏捷
- 第二个是关于docker容器固化镜像时的改动非常小。
docker采用分层存储,相同资源共享,相当于软引用或者软拷贝,类似windows的快捷方式 或者Linux的软连接,举个例子,两个centos7系统的服务,服务不一样但是centos7是共享的同一个文件,换句话来说,当你本地有一个centos7镜像,你拉取了一个基于centos7 的 nginx镜像,如果centos7系统相同的情况下,nginx镜像会直接使用本地的centos7镜像而不是重新拉去centos7部分,关于提交也是一样。
缺点
- 单机使用无法高效集群,虽然docker自身有docker compose但仅仅是单机编排,相对于k8s或其它方案来比依旧有缺陷
- 没用有效的容灾/自愈机制
- 没用统一的配置管理工具
- 大规模部署不是相对来说不太好
解决方案
使用k8s 编排管理 docker
