docker由三部分组成:image(镜像)、容器(container)、仓库(repository).
1.image
Image是一个只读模板,其中包含有关创建Docker容器的说明;Image可以用来创建容器且一个镜像可以创造多个容器。通常,一个Image基于另一个Image,并带有一些额外的自定义。通过引入分层技术,可以增加镜像复用度,减少磁盘占用;同时可以实现差分上传下载,加快镜像pull、push性能。
2.container
Docker利用容器(container)独立运行的一个或者一组应用。容器是利用镜像创建的运行实例(相对于Java中的类和对象的概念)。容器可以被启动、开始、停止、删除。每个容器都是互相隔离的,保证安全的平台。可以把容器看做是一个简易版的Linux环境 (包括root用户名权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎是一模一样的,也是一堆层的统一视角, 唯一区别的是容器的最上面那一层是可读可写的。
容器是镜像启动或执行阶段。Docker中的每个容器都包含了一个软件镜像,该镜像可以被创建、启动、关闭、重启和销毁。
3.repository
集中存放Image的场所,Repository很容易和下面说的Registry(仓库注册服务器)混淆。通俗地说,它们的关系是Registry上往往存放着多个Repository,每个Repository存又放着一大堆Images,每个Image存在不同的标签(Tag);用户可以从通过注册服务器从仓库拉取(带有某个tag的)Image,从而创建Container。