1.1 简介
Docker是一个应用级虚拟化软件,通过将一个已安装好的应用+所需运行库封装成一个镜像文件,将这个镜像运行在容器中,构成一个独立的应用运行环境。在Docker上我们可以运行多个容器,使每个应用都拥有自己独立的运行环境,相互隔离运行,互不影响。
1.1.1 Docker的工作原理
在Docker中,运行一个容器需要依赖于镜像,镜像就像虚拟机的硬盘一样,里面存放了运行一个应用程序所需要的系统库文件及已安装好的应用程序,而容器就像是虚拟机,读取镜像中的文件运行应用程序。仓库用于存储镜像。他们三个是密不可分的。
1.1.2 Docker的镜像、容器和仓库
镜像(image)
Docker将一个已安装好的应用+系统运行库+所需依赖文件封装成一个Docker镜像。镜像中的文件只允许被读取,不允许被修改。
容器(container)
容器用于加载镜像中的文件运行应用程序,并且所有修改操作都会被存储在容器存储层,当容器被删除时,则所有修改操作都会消失。
仓库(repository)
Docker提供一个本地镜像仓库和一个在线开源的镜像仓库(Docker HUB),本地镜像仓库用于将镜像本地存储,而在线的镜像仓库用于云端存储和镜像分享。
1.1.3 Docker的优势
轻量级
Docker运行一个应用更轻量级,不像传统的系统虚拟化那么臃肿。容器相当应用进程,共享主机资源,相比传统系统虚拟化,我们可以运行更多个容器。
迁移性强
Docker镜像可以轻松的迁移到其他主机上使用,可以保证在其他主机上运行应用环境的一致性。
更快速的环境部署
Docker镜像保存了已经安装好的应用及所需依赖+库环境,所以我们只需要基于镜像运行容器,就可以瞬间完成环境的部署,省去了繁琐的安装过程。
更轻松的升级
Docker提供数据卷功能,它可以将物理机目录挂在到容器中,数据会一直存在于物理机,不会丢失,保证了数据安全性。比如我们要升级一个MYSQL数据库,只需要更换新版本的镜像去读取数据就可以很轻松的完成数据库版本的升级。
1.1.4 系统虚拟化和应用虚拟化的区别
我们用具有代表性的应用来描述一下什么是系统虚拟化和应用虚拟化。如下图:
系统虚拟化:vmware workstation
应用虚拟化:docker
随着现在科技的发展与进步,主机硬件资源越来越强大,而虚拟化技术是为了合理利用主机资源而出现的技术。
传统的系统虚拟化是在一台主机上运行虚拟出多个逻辑主机(虚拟主机),在虚拟主机中运行服务程序(应用程序),做到系统之间相互隔离使用,互不影响。每个虚拟主机都需要分配主机资源。
应用虚拟化是一种新兴的技术,借助沙箱运行应用的原理,将应用运行在容器中,让应用拥有独立的运行环境,抛去了传统系统虚拟化还需要重装系统、安装应用、依赖等繁琐的过程。所有容器共享主机内核及资源,当然我们也可以合理的分配容器资源。