美文网首页
Docker学习笔记(二)

Docker学习笔记(二)

作者: jauhwan | 来源:发表于2018-10-28 00:03 被阅读0次

    Docker里面有三个核心的词汇:镜像,仓库,容器。用Docker运行一个程序的过程就是去仓库把镜像拉到本地,然后用命令把镜像运行起来变成容器。

    一、镜像

    镜像(image),本质上就是一系列的文件,包括应用程序的文件,包括运行环境的文件。

    镜像运用了联合文件存储系统技术,是一种分层的文件系统,可以将不同的目录挂到同一个虚拟系统下。

    示意图

    Docker联合文件系统Union File System,它是实现Docker镜像的技术基础,是一种轻量级的高性能分层文件系统,支持将文件系统中的修改进行提交和层层叠加,这个特性使得镜像可以通过分层实现和继承。同时支持将不同目录挂载到同一个虚拟文件系统下。

    每一层文件都是只读的,把每一层加载完成后,这些文件都会被看作同一个目录,相当于只有一个文件系统。这个文件系统就被称作为镜像。

    二、容器

    镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。

    容器的本质就是一个进程。只有最上层是可写的,容器在最上层创建了一个可读可写的文件系统,下层都是只读的。如果要往镜像层中写入文件,再写入文件前,会把这个文件拷贝到最上层,然后再对它进行修改,修改之后当应用要读一个文件时,会从最顶层开始查找,如果没有再往下层找。由于容器层是可写的,镜像层是不可写的,就可以保证同一个镜像可以生成多个容器独立运行,相互之间没有干扰。

    三、仓库

    镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。

    一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。

    通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以latest作为默认标签。

    Docker Registry公开服务是开放给用户使用、允许用户管理镜像的Registry服务。一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。

    最常使用的Registry公开服务是官方的Docker Hub ,这也是默认的Registry,并拥有大量的高质量的官方镜像,网址为:hub.docker.com/ 。在国内访问Docker Hub可能会比较慢国内也有一些云服务商提供类似于Docker Hub的公开服务。

    除了使用公开服务外,用户还可以在本地搭建私有Docker Registry 。Docker官方提供了Docker Registry镜像,可以直接使用做为私有Registry服务。开源的Docker Registry镜像只提供了Docker Registry API的服务端实现,足以支持Docker命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。

    相关文章

      网友评论

          本文标题:Docker学习笔记(二)

          本文链接:https://www.haomeiwen.com/subject/wpmstqtx.html