Docker入门与基本概念
Docker这个词是2014年的时候第一次接触到,当时特意百度了一下,看看这项技术能够解决什么问题,仅限于了解之后也就不了了之。再次对这个词开始感兴趣是因为要在组内推行分组自动化测试,而Docker对自动化测试环境的高效利用,可以解决测试环境不足的问题。接下来我们来讲讲Docker的相关内容。
什么是Docker?
图片.png- Docker是基于Go语言实现的开源项目,诞生于2013年初,最初发起者是dotCloud公司。Docker自开源后收到广泛的关注和讨论,目前已经有多个相关项目,逐渐形成了围绕Docker的生态体系。dotCloud公司后来也改名为Docker Inc,专注于Docker相关技术和产品的开发。
- 现在主流的Linux操作系统都已经支持Docker。Google公司宣称在其PaaS平台及服务产品中广泛应用了Docker。微软公司宣布和Docker公司合作,以加强其云平台Azure对Docker的支持。亚马逊云也提供对Docker的支持。国内的网易蜂巢、阿里云,腾讯云也都支持Docker容器,容器技术的应用已经逐渐成为业内主流选择。
- Docker的主要目标是“Build,Ship,and Run Any App,Anywhere”,即通过对应用组件的封装(Packaging)、分发(Distribution)、 部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个Web 应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。可以说Docker为应用的开发和部署提供了“一站式”的解决方案。
Docker和虚拟机的区别
作为一种轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著优势。如下图所示。
图片.png 图片.png 图片.png安装Docker
Docker支持在主流的操作系统平台上使用,包括Ubuntu、CentOS、Windows以及MacOS系统等。当然,在Linux系列平台上是原生支持,使用体验更好。以下是Docker支持部分系统的截图。
图片.png安装过程就不在多述,官网有详细介绍https://www.docker.com/community-edition。
Docker的三大核心概念,镜像(Image)、容器(Container)、仓库(Repository)。
图片.png三者之间的关系可以由上图看出,简单总结起来仓库是存放镜像的,把镜像启动起来后就是容器。
镜像(Image)
Docker镜像(Image)类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,镜像是创建Docker容器的基础。通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并通过简单的命令就可以直接使用。
官方的镜像仓库地址:https://hub.docker.com。
容器(Container)
Docker容器(Container)类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例,可以将其启动、开始、停止删除,而这些容器都是相互隔离、互不可见的。简单地说,容器是镜像的一个运行实例,所不同的是,它带有额外的可写文件层。Docker容器文件系统图如下。
图片.png仓库(Repository)
仓库(Repository)是集中存放镜像的地方。一个容易与之混淆的概念是注册服务器(Registry)。实际上注册服务器是存放仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。仓库又分公共仓库和私有仓库。
仓库和注册服务器的区别可以见下图。
Docker能改变什么?
总结起来有以下几个方面。
- 更高效的利用系统资源。相较于虚拟机docker容器的性能更好,能起更多的应用。
- 一致的运行环境。开发、测试、在线确认、在线的运行环境可以保持一致都统一存储为镜像,在不同的环境运行相同的镜像即可,可以保证各个阶段应用运行环境的一致性。
- 持续交付和部署。由于各个运行环境的一致性,使得自动化测试环境更加方便快捷,持续交付和部署也变的更加便捷。
- 更轻松的迁移系统。因为应用运行的依赖环境都在docker容器内,所以进行系统迁移,从一个环境迁移到另外一个环境,更加方便和快捷,只需将镜像文件拷贝到对应的环境,启动起来即可。不在需要繁琐的配置各种依赖的软件及系统版本,使得迁移更加高效顺畅。