本节书摘来自华章社区《docker进阶与实战》一书中的第3章,第3.1节docker image概念介绍,作者华为docker实践小组,更多章节内容可以访问云栖社区“华章社区”公众号查看
3.1 docker image概念介绍
简单地说,docker image是用来启动容器的只读模板,是容器启动所需要的rootfs,类似于虚拟机所使用的镜像。首先需要通过一定的规则和方法表示docker image,如图3-1
所示。

图3-1是典型的docker镜像的表示方法,可以看到其被“/”分为了三个部分,其中每部分都可以类比github中的概念。下面按照从左到右的顺序介绍这几个部分以及相关的一些重要概念。
remote docker hub:集中存储镜像的web服务器地址。该部分的存在使得可以区分从不同镜像库中拉取的镜像。若docker的镜像表示中缺少该部分,说明使用的是默认镜像库,即docker官方镜像库。
namespace:类似于github中的命名空间,是一个用户或组织中所有镜像的集合。
repository:类似于git仓库,一个仓库可以有多个镜像,不同镜像通过tag来区分。
tag:类似git仓库中的tag,一般用来区分同一类镜像的不同版本。
layer:镜像由一系列层组成,每层都用64位的十六进制数表示,非常类似于git仓库中的commit。
image id:镜像最上层的layer id就是该镜像的id,repo:tag提供了易于人类识别的名字,而id便于脚本处理、操作镜像。
镜像库是docker公司最先提出的概念,非常类似应用市场的概念。用户可以发布自己的镜像,也可以使用别人的镜像。docker开源了镜像存储部分的源代码(docker registry以及distribution),但是这些开源组件并不适合独立地发挥功能,需要使用nginx等代理工具添加基本的鉴权功能,才能搭建出私有镜像仓库。本地镜像则是已经下载到本地的镜像,可以使用docker images等命令进行管理。这些镜像默认存储在/var/lib/docker路径下,该路径也可以使用docker daemon –g参数在启动daemon时指定。
提
示 docker的镜像已经支持更多层级,比如用户的命名空间之前可以包含组织(remote-dockerhub.com/group/namespace/bar:latest)。但是目前docker官方的镜像库还不具备该能力。