Docker解决了什么问题?
Docker image中包含了运行环境+配置,对部署相当友好。Docker解决了运行环境和配置问题,方便发布,也就方便做持续集成。
如果需要从Clojure开发环境完整的切换到Go语言吗?启动一个容器吧。 需要为集成和性能测试提供生产环境DB?启动一个容器吧! 瞬间启动大量容器,非常适合在业务高峰期进行横向扩展,比传统的启动EC2实例或者物理机可要快多了。
虚拟机做了良好的资源隔离,不同用户之间彼此不会相互影响。但是,虚拟机有缺点:创建速度慢,迁移起来麻烦,因为中间加了一层guest os,有了性能损耗。 相对虚拟机的重量级虚拟化方案,Linux内核级的一些隔离方案让人们看到了希望,cgroups、namespace、tc、quota、chroot、lxc。终于,Docker出现了, Docker利用这些成熟的技术,让虚拟化变得轻量了起来,创建一个container瞬间完成,秒级!cpu指令集不再被翻译执行,性能损耗非常少,虽说隔离性没有虚 拟机那么彻底,安全性上稍差一些,但也基本可以用。
类似于Java的编译一次,到处运行,Docker是构建一次,在各种平台上运行。 以前部署代码都是代码级别的,有了Docker,则可以进行容器级别的部署。这样带来的最大的好处就是开发者本地测试、CI服务器测试、测试人员测试,以及生 产环境运行的都可以是同一个Docker镜像。