(二)Docker概念简介

1. Docker

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的cgroup(资源限制),namespace(资源隔离),以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作
系统层面的虚拟化技术。

2. 为什么使用Docker?

  1. 更高效的利用系统资源;
  2. 更快速的启动时间;
  3. 开发、测试和发布一致的运行环境,消除线上线下的环境差异;
  4. 持续部署和测试,开发人员通过Dockerfile构建镜像,测试和运维人员可直接部署软件镜像来测试和发布;
  5. 跨(云)平台;
  6. 应用镜像仓库便于维护和扩展;

3. 基本概念

3.1 镜像(Image)

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数( 如匿名卷、环境变量、用户等) 。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
因为镜像包含操作系统完整的 root 文件系统,其体积往往是庞大的,因此在 Docker 设计时,就充分利用 Union FS 的技术,将其设计为分层存储的架构。镜像构建时,会一层层构建,前一层是后一层的基础。分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

3.2 容器(Container)

镜像(Image ) 和容器(Container ) 的关系,就像是面向对象程序设计中的 类 和 实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。

3.3 仓库(Repository)

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

  • 公开服务 Docker Hub
  • 私有Docker Registry, Docker 官方提供了Docker Registry 镜像,可以直接使用做为私有 Registry 服务。

猜你喜欢

转载自www.cnblogs.com/walkinginthesun/p/9418772.html