l

liangxiaobei

V1

2022/06/11阅读:30主题:默认主题

公众号文章:Docker

Docker重要的三个基本概念:镜像、容器和仓库

一、Docker镜像

1.1 Docerk镜像理解

操作系统分为内核用户空间。以Linux系统为例,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image)就好比是一个root文件系统。

从上面的角度出发,我们可以理解为:Dokcer镜像是一个特殊的文件系统,其特殊性主要体现在以下两个方面:

  • (1)Docker镜像为容器的运行提供所需的程序、库、资料、配置等文件的同时,还准备了一些配置参数(比如匿名卷、环境变量、用户等);
  • (2)Docker镜像不包含任何动态数据,其内容在构建之后就不会被修改。

1.2 分层存储

因为镜像包含操作系统完整的root文件系统,这导致其体积通常很大。鉴于此缺点,Docker在Union FS技术的基础上,采用了分层存储架构的设计理念:

  • Docker镜像的构建:一层层构建,前一层是后一层的基础;
  • 每一层构建完成后,就不会再发生变化,后一层上的任何改变只发生在当前层。比如,我们在当前层删除前一层的文件,实际的操作并不删除前一层的文件,而是删除当前层标记的上一层文件信息;
  • 在构建Docker镜像时,每一层尽量只包含该层要添加的东西,任何额外的东西应该在该层构建结束前清除掉。

分层存储的特征使得镜像的复用、定制变的更为容易。这使得我们可以使用之前构建号的镜像作为基础层,然后进一步添加新的层,以定制自己所需要的内容,构建新的镜像。

二、Docker容器

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

2.1 Docerk容器的实质

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行与自己独立的命名空间。因此容器可以具有自己的root文件系统、网络配置、进程空间、用户ID空间。

容器内的进程是运行在一个隔离的环境中,使用起来就像在一个独立于宿主的系统下操作一样,而使得容器具有了封装性。想比较与直接在宿主中运行,容器的运行更加安全。

2.2 Docerk容器的存储层

容器也是分层存储的,每个容器的运行时,是以镜像为基础层,在器上创建一个当前容器的存储层。容器存储层的生命周期和容器一样,即容器消亡时,容器存储层也随之消亡,任何保存与容器存储层的信息也会丢失掉。

根据Docker的设计思想,容器不应该向其存储层写入任何数据,也就是所谓的无状态化。所有的文件写入操作应该使用如下两种方式:

  • 数据卷(Volume)
  • 绑定宿主目录

在数据卷或绑定宿主目录位置上的读写都会跳过容器存储层,而直接对宿主或网络存储发生读写,这样处理的方式会其性能和稳定性更高。

注意:数据卷的生存周期独立于容器,即容器消亡,数据卷不会消亡。

三、Docker仓库

###3.1 Docker仓库简介

Docker仓库提供了一个集中的存储、分发镜像的服务,使得构建的Docker镜像不仅可以在当前宿主机上运行,还可以在其他服务器上使用。

  • 一个Docker仓库中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag),每个标签对应一个镜像;
  • 仓库中镜像命名格式:通常为了便于仓库管理,一个仓库会包含一个软件不同版本的镜像,而标签可用于标识不同版本。即我们可以通过<仓库名>:<Tag>的格式来标识仓库中的镜像,如果不给出标签,则会使用默认的latest标签;
  • 仓库的命名格式:仓库名通常以两段路径形式给出,比如liang/nginx-proxy,前面的liang标识Docker仓库多用户环境下的用户名,后者的nginx-proxy对应于软件名。

3.2 Docker仓库公开服务

Doker公开服务是开放给用户使用、允许用户管理镜像的仓库服务。用户可以免费上传、下载公开的镜像,还可以提供收费服务供用户管理私有镜像。最常用的公开Docker仓库服务包括:

  • Docker Hub:官方默认的Docker仓库,其拥有大量的高质量官方镜像;
  • CoreOS的Quay.io:CoreOS相关的镜像;Google的Google Container Registry, Kubernetes的镜像使用嗯就是这个服务。

通常,国内访问这些服务会很慢,因此国内的一些云端服务商提供了针对Docker Hub的镜像服务,这就是我们常说的镜像服务加速器。常见的有阿里云加速器DaoCloud加速器,通过它们我们可以支持从国内的地址下载Docker Hub上的镜像。

相应的,国内也有一些云服务商提供的类似于Docker Hub的公开服务:

  • 时速云镜像仓库;
  • 网易云镜像服务;
  • DaoCloud镜像市场;
  • 阿里云镜像库。

3.3 私有Docker仓库

Docker官方提供了开源Docker Registry镜像,可以直接使用作为私有Registry服务。开源Docker Registry镜像只提供了Docker Registry API的服务端实现,不过这也足够支持docker命令了,不影响其使用。但是开源的Docker仓库镜像服务没有图形界面、镜像维护、用户管理、访问控制等高级功能。将来如果遇到需要这些高级服务的场景,可以查阅有关官方的商业化版本Docker Trusted Registry服务。

分类:

后端

标签:

后端

作者介绍

l
liangxiaobei
V1