1. Docker简介
1). Docker
Docker前问题:
开发只提供src源代码;
运维部署时出现环境不一致的问题,例如:Mysql版本、redis补丁、JDK版本等;
Docker提供了一个标准化的解决方案——系统平滑移植,容器虚拟化技术;
环境配置相当麻烦,费力费时,如何从根本上解决问题,软件可以携带环境安装?开发人员利用Docker可以消除协作编码时"在我的机器上正常工作"的问题;
Docker后:
将运行文档、配置环境、运行环境、运行依赖包、操作系统发行版、内核打包成一个镜像文件,达到应用程式跨平台间的无缝接轨运作;

-----------------------------------------------------------------------------------------------------------------------------

Docker定义
Docker是基于Go语言实现的云开源项目,主要目标是"Build、Ship and Run Any App,Anywhere",也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP及其运行环境能够做到"一次镜像,处处运行";
将应用打包成镜像,通过镜像和Docker引擎创建运行在服务器上的实例,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器,并且只需要一次配置好环境,切换到别的机器上就可以一键部署好,大大简化了操作;

-----------------------------------------------------------------------------------------------------------------------------

容器与虚拟机比较
1). 容器发展简史

2). 传统虚拟机技术
虚拟机是带环境安装的一种解决方案;传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统,创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用;
缺点:1). 资源占用多; 2). 冗余步骤多; 3). 启动慢

3). 容器虚拟化技术
Linux容器:Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件;容器提供的镜像包含了应用的所有依赖项,因此从开发到测试再到生产的整个过程中,都具有可移植性和一致性;
Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离;有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中;容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置;系统因此变得高效轻量并能够保证部署到任何环境中的软件都能始终如一地运行;
Docker是操作系统层面上的虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面上的虚拟化;与传统虚拟机相比,Docker的优势体现为启动速度块,占用体积小;

4). Docker和传统虚拟化方式的不同之处
- 传统虚拟机是虚拟出一套硬件之后,在其上运行一个完整的操作系统,然后再在系统上运行所需要的应用进程;
- 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟,因此容器要比传统虚拟机更为轻便;
- 每个容器之间相互隔离,每个容器也都有自己的文件系统,容器之间进程不会相互影响,能区分计算资源;

5).Docker优势:
- 更快速的应用交付和部署
传统应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后根据配置文档进行繁杂的配置才能正常运行;Docker化之后,只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间;
- 更便捷的升级和扩缩容
大量应用通过微服务的方式架构,当现有的容器不足以支撑业务处理时,可以通过镜像运行新的容器进行快速扩容,使应用系统的扩容从天级到分钟级到秒级;
- 更简单的系统运维
应用容器化运行后,生产环境运行的应用可与开发、测试环境高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性带来影响,产生新的BUG;
- 更高效的计算资源利用
Docker是内核级虚拟化,不需要额外的Hypervisor支持,所以在一台物理机上可以运行多个容器实例,大大提升物理服务器CPU和内存利用率;

posted on 2023-11-29 10:05  VaeSSAQ  阅读(12)  评论(0)    收藏  举报