Docker 是一个基于go语言开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
在没有使用docker之前,代码在开发到生产这个过程中往往需要经过一系列的环境的搭建以及数据的准备。例如:部署安装生产环境的的redis集群环境,在这之前需要ruby的底层环境等其他众多底层环境的依赖,而这种简单的环境迁移仅仅是在众多运维工作中的很小的一个部分,可想而知在运维过程中,往往很多的时间和精力都花费在环境的重复搭建和踩坑之中。在拥有了docker之后,可以将需要的应用以及数据按照一定的格式和标准进行封装,打包为一个镜像,有点类似于咱们在系统安装中接触到的iSO文件。而镜像通常可能会遇到损坏的情况,这时候在镜像的外层增加一个容器,如果需要复制到其他环境,只需要简单的几行命令即可将这个应用完全安装到新的环境。在这个过程中,Docker自动将安装和配置的工作完成。##
a. 统一不同环境配置,代码部署流水线化
b. 隔离不同应用
c. 自动化测试和持续集成优点:如同上面在应用场景中介绍的一样,docker在解决应用隔离以及代码快速部署的过程中体现了作为替代VM的潜质。
不足:
i. docker在处理一些携带的敏感数据的应用上,存在可泄露的风险。
ii. 实现docker需要众多的技术支撑。