Docker 架构

Docker 引擎架构中有三个基本概念:镜像(image)、容器(container)和仓库(repostory)。

 

1. 镜像 image

Docker 镜像是一个只读的模板对象,里面包含有文件系统。比如,一个镜像可以包含一个完整的 CentOS 系统,里面仅仅安装了 Nginx。

Docker 镜像的主要作用是用来创建 Docker 容器。

Docker 提供了简单地创建镜像的机制,还可以使用别人已经做好的镜像。

 

2. 容器 container

Docker 引擎利用 Docker 容器来运行应用,Docker 容器是通过一个 Docker 镜像创建的运行范例,它可以被启动、被停止和被删除。容器与容器之间,以及容器与宿主机之间都是互相隔离的,充分保证了 Docker 宿主机和 Docker 容器独立运行的安全。

Docker 镜像和 Docker 容器的关系,就像一个应用程序文件(Docker镜像)和运行中的应用程序(Docker容器)之间的关系。

 

3. 仓库 repostory

Docker 仓库是集中存储 Docker 镜像的数据库。Docker 仓库分为公共仓库和私有仓库两种类型。其中,Docker Hub 是官方提供的公共仓库。另外,官方还提供了docker-registry工具,用于构建私有的镜像仓库。

 

4. 镜像、容器和仓库的关系

  • Docker 镜像是构建 Docker 容器的基础,是 Docker 容器的模板。
  • Docker 容器是 Docker 镜像的运行范例。两者之间的关系,就像一个应用程序文件(Docker镜像)和运行中的应用程序(Docker容器)。
  • Docker 仓库是存储 Docker 镜像的数据库。可以从 Docker 仓库中查询、下载、增加、删除或者更新 Docker 镜像。
    •  

      5. Docker引擎的架构图


      概念说明

      Docker 镜像(Images)

      Docker 镜像是用于创建 Docker 容器的模板。

      Docker 容器(Container)

      Docker 容器是独立运行的一个或一组应用,是 Docker 镜像运行时的实体。

      Docker 客户端(Client)

      Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。

      Docker 主机(Host)

      一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。也就是 Docker Server 的运行机器。

      Docker Registry

      Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

      Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

      一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

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

      Docker Machine

      Docker Machine是一个简化 Docker 安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装 Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

      在 Ubuntu 系统上,常用的 Docker 安装方式有两种:使用官方脚本安装 和 使用 apt-get 安装。使用官方脚本安装,安装命令如下:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun,使用 apt-get 安装:apt-get install docker-ce