在软件开发过程中环境配置永远是最让人头疼的在开发之前我们需要准备各种运行环境、IDE及辅助工具同时软件部署也为程序员的谢顶助力三分。
搭建不同语言、不同技术栈适配的运行环境还要部署到多个服务器主机上并且这些主机还可能来自不同地方这为部署与运维人员带来了极大挑战。
而需求永远是推动技术发展的源动力正是在这样的背景下"容器化技术"出现了。
什么是容器化?容器化实际上是一种轻量级的虚拟化技术。只不过相对于VM,属于进程级别的隔离(通过linux namespace实现),具备以下特点:
1)更大的弹性
2)更快的启动速度
3)更少的资源消耗
而最为大家熟悉的容器化运行时技术就非Docker莫属了。
什么是docker?Docker是一种容器化运行技术或平台,基于Linux内核的cgroup和namespace,对进程进行了封装隔离,属于操作系统层面虚拟化技术。
传统虚拟化技术是虚拟出一套硬件后,在其基础上运行一个完整的操作系统,再在此系统上运行所需的应用进程。而Docker技术是容器内的应用进程直接运行于宿主机的内核,容器内没有自己的内核,而且也不虚拟出硬件。因此,相对于传统的虚拟化技术而言,Docker更加轻便。
容器化技术从大方向来看,可分为容器化运行技术和容器化编排技术,那何为容器化编排技术?Docker本身非常适合管理单个容器。但随着越来越多的容器和容器化应用程序,并把它们划分成数百个部分,很可能会导致管理和编排变得非常困难。最终,需要对容器实施分组,以便跨所有容器提供网络、安全、遥测等服务。于是,Kubernetes(也称k8s) 应运而生。
真正的生产型应用会涉及很多容器,这些容器必须跨多个服务器主机进行部署。Kubernetes可以提供所需的编排和管理功能,以便针对这些工作负载大规模部署容器。借助Kubernetes编排功能,可以构建跨多个容器的应用服务、跨集群调度、扩展这些容器,并长期持续管理这些容器的健康状况。
为什么要使用docker?1.环境一致
2.节约利用系统资源
3.暂用资源少、启动速度快



