1. Docker是什么
为什么有Docker?
确保应用能够在不同环境中运行和通过质量检测,并在在部署中不出现各种问题,配置问题,也无需重新编写代码和进行故障修复。
Docker提供容器化技术,提供系统平滑移植、容器虚拟化技术。
Docker理念
基于Go语言实现的云开源项目,可以做到“一次镜像,处处运行”,做到只需要一次配置好环境,换到别的物理机上可以一键部署,大大简化了操作。
一句话总结
解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
容器与虚拟机的比较
虚拟机
虚拟机是带环境安装的一种解决方案,该方案可以在一种操作系统里面运行另一种操作系统,比如在win10系统中运行linux系统centos7.应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对底层系统来说,虚拟机就是一个普通文件,不需要就删掉,对其他部分毫无影响。这类虚拟机完美地运行了另外一套系统,能够使应用程序、操作系统和硬件三者之间的逻辑不变。
Win10 | VMWare | Centos7 | 各种cpu、内存网络额配置+各种软件 | 虚拟机实例 |
---|---|---|---|---|
虚拟机的缺点:资源占用多、冗余步骤多、启动慢。
容器
Linux容器(Linux Containers,缩写为 LXC)
Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。
Linux 容器不是模拟一个完整的操作系统而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
对比
比较了 Docker 和传统虚拟化方式的不同之处:
*传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
*容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
- 每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
能干什么
首先,docker的存在致使了职业的转变,程序员、开发者的职责不仅仅是编码code,而是想运维偏向,从而诞生了DevOps engineer。
docker的一次构建,随处运行: