初识docker
1.docker是什么?
docker是基于Go语言实现的云开源项目。
docker的主要目标是“build,ship and run any app,anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理。使用户的app(可以是一个web应用或数据库应用等)及其运行环境做到“一次镜像,处处运行”
Linux容器技术的出现就解决了这样的一个问题,而docker就是在他的基础上发展来的,将应用打成镜像,通过镜像成为运行在docker容器上面的实例,而docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作
总之: docker就是解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
2.为什么会有docker出现?
答案就是使用容器,当出现开发环境系统能正常运行,但是在生产环境问题层出不穷。而且环境配置麻烦,换一台机器就要重新来一次,费时费力,docker对此给出了一个标准化的解决方案-------系统平滑移植,容器虚拟化技术。也就是说。安装的时候,把原始环境一模一样的复制过来,开发人员利用docker可以消除写作编码时“”在我的机器上可以正常工作“的问题。
docker的出现使得docker得以打破过去“程序即应用”的概念,透过镜像(images)将作业系统核心除外,运作用用程序所需要的系统环境,由下而上打包,达到应用程序跨平台间的无缝接轨运作。
3.docker容器与虚拟机的区别?
容器安装和构建的发展
发展:磁碟->卡片->虚拟机
虚拟机就是带环境安装的一种解决方案,他可以在一种操作系统里面运行另一种操作系统,比如win10系统里面运行Linux系统CentOS7。应用程序对此毫无感知,因为虚拟机看上去跟真事系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了删掉就好,对其他部分毫无影响。
传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如:VitualBox和VMWare等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。
传统虚拟机的缺点:
1.资源占用多,
2.冗余步骤多
3.启动慢
Linux容器的出现
由于传统虚拟机的某些缺点,linux发展出另一种虚拟化技术:linux容器(LXC),Linux容器是与系统其它部分隔离开的一系列进程,从另一个镜像运行,并且有该镜像提供支持进程所需的全部文件,容器提供的镜像包含了应用的所有依赖项,因而从开发到测试再到生产的整个过程中,她都是具有可移植性和一致性。
容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一的运行。
比较docker和传统虚拟机的不同:
- 传统虚拟机技术是虚拟出一套硬件后,在其上面运行一个完整的操作系统,在该系统上再运行所需的应用进程
- 容器内的应用进程直接进行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟,因此容器要比传统虚拟机更为轻便
- 每个容器之间相互隔离,每个容器质检有自己的文件系统,容器质检进程不会相互影响,能区分计算资源
总结:Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统。而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker又是体现在启动速度快,占用体积小
本文来自博客园,作者:zhupan,转载请注明原文链接:https://www.cnblogs.com/zhupanpan/p/17665544.html