1、配置简化

这是Docker 的主要使用场景。将应用的所有配置工作写入 Dockerfile 中,创建好镜像,以后就可以无限次使用这个镜像进行应用部署了。这大大简化了应用的部署,不需要为每次部署都进行繁琐的配置工作,实现了一次打包,多次部署。这大大加快了应用的开发效率,使得程序员可以快速搭建起开发测试环境,不用关注繁琐的配置工作,而是将所有精力都尽可能用到开发工作中去。

 

2、代码流水线管理 代码从开发环境到测试环境再到生产环境,需要经过很多次中间环节,Docker  给应用

提供了一个从开发到上线均一致的环境,开发测试人员均只需关注应用的代码,使得代码的流水线变得非常简单,这样应用才能持续集成和发布。

 

3、快速部署

在虚拟机之前,引入新的硬件资源需要消耗几天的时间。Docker 的虚拟化技术将这个 时间降到了几分钟,Docker 只是创建一个容器进程而无需启动操作系统,这个过程只需要 秒级的时间。

 

4、应用隔离

资源隔离对于提供共享 hosting 服务的公司是个强需求。 如果使用 VM,虽然隔离性非常彻底,但部署密度相对较低,会造成成本增加。

Docker 容器充分利用linux 内核的namespace 提供资源隔离功能。结合 cgroups,可以方便的设置每个容器的资源配额。既能满足资源隔离的需求,又能方便的为不同级别的用户设置不同级别的配额限制。

 

5、服务器资源整合


正如通过VM 来整合多个应用,Docker 隔离应用的能力使得Docker 同样可以整合服务 器资源。由于没有额外的操作系统的内存占用,以及能在多个实例之间共享没有使用的内存,Docker 可以比 VM 提供更好的服务器整合解决方案。

通常数据中心的资源利用率只有30%,通过使用 Docker 并进行有效的资源分配可以提高资 源的利用率。

 

6、多版本混合部署随着产品的不断更新换代,一台服务器上部署多个应用或者同一个应用的多个版本在企

业内部非常常见。但一台服务器上部署同一个软件的多个版本,文件路径、端口等资源往往会发生冲突,造成多个版本无法共存的问题。

如果用docker,这个问题将非常简单。由于每个容器都有自己独立的文件系统,所以根本不存在文件路径冲突的问题; 对于端口冲突问题,只需要在启动容器时指定不同的端口映射即可解决问题。

 

7、版本升级回滚 一次升级,往往不仅仅是应用软件本身的升级,通过还会包含依赖项的升级。 但新旧

软件的依赖项很可能是不同的,甚至是有冲突的,所以在传统的环境下做回滚一般比较困难。如果使用docker,我们只需要每次应用软件升级时制作一个新的docker 镜像,升级时先停 掉旧的容器, 然后把新的容器启动。需要回滚时,把新的容器停掉,旧的启动即可完成回滚,整个过程各在秒级完成,非常方便。

 

8、内部开发环境在容器技术出现之前,公司往往是通过为每个开发人员提供一台或者多台虚拟机来充当

开发测试环境。开发测试环境一般负载较低,大量的系统资源都被浪费在虚拟机本身的进程上了。

Docker 容器没有任何 CPU 和内存上的额外开销,很适合用来提供公司内部的开发测试环境。 而且由于Docker 镜像可以很方便的在公司内部共享,这对开发环境的规范性也有极大的帮 助。

 

9、PaaS

使用 Docker 搭建大规模集群,提供 PaaS。这一应用是最有前景的一个了,目前已有很 多创业公司在使用Docker 做 PaaS 了,例如云雀云平台。用户只需提交代码,所有运维工作均由服务公司来做。而且对用户来说,整个应用部署上线是一键式的,非常方便。

 

10、云桌面

 

方案所提供的虚拟桌面相比于传统的基于硬件虚拟化的桌面方案更轻量级,运行速率大大提升。不过该方案仍处于实验阶段,不知是否可行。可以参考一下 Docker-desktop 方案。




https://blog.51cto.com/duyuheng/1959344