Docker基本概念:镜像、容器、仓库

2019-02-14 12:51:19   Docker
  Docker  

三个基本概念

  • 镜像 Image
  • 容器 Container
  • 仓库 Repository

理解了这三个概念,就理解了Docker的整个生命周期。


镜像

  • 操作系统分为内核用户空间。对于Linux,内核启动后,会挂在root文件系统为其提供用户空间支持。Docker镜像(Image)就相当于一个root文件系统
  • Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些参数配置(如匿名卷、环境变量、用户等)
  • 镜像不包含任何动态数据,其内容在构建后也不会被改变。

分层存储

  • 利用Union FS的技术,镜像被设计成分层存储的架构。
  • 镜像是一个虚拟概念,实际由多层文件系统联合组成。
  • 镜像一层层构建,前一层是后一层的基础,并且构建后不会改变,后一层任何改变只发生在本层。例如,删除前一层文件,只会在当前层标记删除而已,前一层并未改变,文件会一直跟随镜像。
  • 因此,每层只添加需要的东西,任何额外的东西在该层构建结束前应清理掉

容器

  • 镜像与容器的关系就像面向对象程序设计中类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。
  • 容器实质是进程,但与直接在宿主机执行的进程不同,容器进程运行于属于自己的独立的命名空间。
  • 容器拥有自己的root文件系统、网络配置、进程空间、用户ID空间。
  • 容器内的进程运行在一个隔离的环境。
  • 容器存储层生命周期和容器一样,容器消亡,存储层消亡,保存于存储层的信息随容器删除而丢失
  • 容器不应该向存储层内写入任何数据,所有文件写入操作应使用数据卷(Volume)或者绑定宿主目录,在这些位置读写会跳过存储层,对宿主或网络存储读写,性能稳定性更高。
  • 数据卷生命周期独立于容器,容器消亡,数据卷不会消亡。因此使用数据卷,容器可以随意删除,重新run,数据不会丢失。

命名空间(英语:Namespace,日语:名前空間),也称名字空间、名称空间等,它表示着一个标识符(identifier)的可见范围。就好比,谷歌有一个员工id为250,Facebook也有一位员工id为250,但由于属于不同公司,不会因为ID相同而造成混淆。Namespace是Linux内核对系统资源进行隔离和虚拟化的特性,这些系统资源包括进程ID、主机名、用户ID、网络访问、进程间通讯和文件系统等


仓库

  • Docker Registry是集中存储,分发镜像的服务。
  • 一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多 个标签(Tag);每个标签对应一个镜像。
  • 格式通常为<仓库名>:<标签>,不给出标签时默认latest为标签,例如ubuntu:16.04,而ubuntu视为ubuntu:latest
  • 仓库名经常为两段式路径,比如vien/nginx ,前者往往意 味着 Docker Registry 多用户环境下的用户名,后者则往往是对应的软件名。但这 并非绝对,取决于所使用的具体 Docker Registry 的软件或服务。
  • 最常用的Registry公开服务是官方的Docker Hub

原文地址:https://www.gitbook.com/book/yeasy/docker_practice/details
vien.tech版权所有,允许转载,但转载请注明出处和原文链接: https://vien.tech/article/22
欢迎小伙伴们在下方评论区留言 ~ O(∩_∩)O
文章对我有帮助, 点此请博主吃包辣条 ~ O(∩_∩)O

猜你喜欢


评论

There are no comments yet.
未登录

登录后即可发表评论

登录或注册