作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。
首先,Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快的多。其次,Docker对系统资源的利用率很高,一台主机上可以同时运行千个Docker容器。
容器除了运行其中应用外,基本不消耗额外的系统资源,使的应用的性能很高,同时系统开销尽量小。传统虚拟机方式运行10个不同的应用就要起10个虚拟机,而Docker只需要启动10个隔离的应用即可。
Docker优势:
- 更快速的交付和部署(一次创建和配置,可以在任意地方正常运行)
- 更高效的虚拟化(不需要hypervisor支持,内核级虚拟化)
- 更轻松的迁移和扩展(在任意平台移植)
- 更简单的管理()
Docker包括三个基本概念:
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
镜像
Docker镜像(Image)就是一个只读的模板。
例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或者用户需要的其他应用程序。
镜像可以用来创建Docker容器。
Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
容器
Docker利用容器(Container)来运行应用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看作是一个简易版的Linux环境和运行在其中的应用程序。
注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
Docker仓库
仓库(Repository)是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一潭,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是Docker Hub,存放了数量庞大的镜像供用户下载。
当用户创建了自己的镜像之后就可以使用push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像的时候,只需要从仓库上pull下来就可以了。
注:Docker仓库的概念跟Git类似,注册服务器可以理解为Github这样的托管服务。