本篇来自于尚硅谷周阳老师 https://www.bilibili.com/vide...
百度简介:Docker 是一个开源的应用容器引擎,让开发者能够打包他们的应用以及依赖包到一个可移植的容器中,而后发布到任何流行的Linux机器或Windows 机器上,也能够实现虚拟化,容器是彻底使用沙箱机制,相互之间不会有任何接口。docker
一个完整的Docker有如下几个部分组成:数据库
一款产品从开发到上线,从操做系统,到运行环境,再到应用配置。做为开发+运维之间的协做咱们须要关心不少东西,这也是不少互联网公司都不得不面对的问题,特别是各类版本的迭代以后,不一样版本环境的兼容,对运维人员都是考验segmentfault
Docker镜像的设计,使得Docker得以打破过去「程序即应用」的观念。透过镜像(images)将做业系统核心除外,运做应用程式所须要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运做。服务器
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是经过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(能够是一个WEB应用或数据库应用等等)及其运行环境可以作到“一次封装,处处运行”。
Docker解决了运行环境和配置问题软件容器,方便作持续集成并有助于总体发布的容器虚拟化技术。架构
虚拟机(virtual machine)就是带环境安装的一种解决方案。
它能够在一种操做系统里面运行另外一种操做系统,好比在Windows 系统里面运行Linux 系统。应用程序对此毫无感知,由于虚拟机看上去跟真实系统如出一辙,而对于底层系统来讲,虚拟机就是一个普通文件,不须要了就删掉,对其余部分毫无影响。这类虚拟机完美的运行了另外一套系统,可以使应用程序,操做系统和硬件三者之间的逻辑不变。 运维
虚拟机的缺点:ide
容器与虚拟机有所不一样,虚拟机经过虚拟软件中间层将一台或者多台独立的虚拟机器运行在物理硬件之上。而容器则是直接运行在操做系统内核之上,是进程级别的,并对进程进行了隔离,而不是模拟一个完整的操做系统。所以,容器虚拟化也被称为“操做系统级虚拟化”,容器技术能够将软件须要的环境配置都打包到一个隔离的容器中。让多个独立的容器高效且轻量的运行在同一台宿主机上。而Docker就是为了实现这一切而生的。ui
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操做系统,在该系统上再运行所需应用进程;spa
而容器内的应用进程直接运行于宿主的内核,容器内没有本身的内核,并且也没有进行硬件虚拟。所以容器要比传统虚拟机更为轻便。操作系统
每一个容器之间互相隔离,每一个容器有本身的文件系统 ,容器之间进程不会相互影响,能区分计算资源。