Docker 架构以及概念
Docker 的架构
Docker 核心概念
Docker 的核心基本概念:
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
镜像
Docker 镜像就是一个只读的模板。比如,一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 apache 或用户需要的其他应用程序。镜像可以用来创建 Docker 容器。
镜像对于用户而言是只读的,不可修改;当然用户也可以自己配置软件运行环境并且制作成镜像上传到 Docker Hub 仓库中供其他用户拉取使用。
一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
容器
Docker 利用容器来运行应用。容器是从镜像创建的运行实例,它可以被启动、开始、停止、 删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括 root 用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。
仓库
仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈, 并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub, 存放了数量庞大的镜像供用户下载。国内的公开仓库包括 Docker Pool 等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
注:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务,也可以自己搭建 Git 服务器。
