参考:https://z.itpub.net/article/detail/8D3166D2992EF1DE1FB5A6304F686F63

    • 镜像(Image)
      • 一个只读的模板,镜像可以用来创建 Docker 容器
      • 用户基于镜像来运行自己的容器。镜像是基于 Union 文件系统的层式结构
      • 可以简单创建或更新现有镜像,或者直接下载使用其他人的。可以理解为生成容器的『源代码』
    • 容器(Container)
      • 容器是从镜像创建的运行实例,在启动的时候创建一层可写层作为最上层(因为镜像是只读的)
      • 可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
      • 可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序
    • 仓库(Registry)
      • 集中存放镜像文件的场所,可以是公有的,也可以是私有的
      • 最大的公开仓库是 Docker Hub
      • 国内的公开仓库包括 Docker Pool 等
      • 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了
      • Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务

    感觉可以将docker 理解成镜像版的git。

    另外 Docker 采用的是客户端/服务器架构,客户端只需要向 Docker 服务器或守护进程发出请求即可完成各类操作。

    我们可以用docker 做什么?

    • 统一、优化和加速本地开发和构建流程
    • 保证不同的环境中可以得到相同的运行结果
    • 创建隔离环境用于测试

    Docker 可以提供的隔离有:

    • 文件系统隔离:每个容器都有自己的 root 文件系统
    • 进程隔离:每个容器都运行在自己的进程环境中
    • 网络隔离:容器间的虚拟网络接口和 IP 地址都是分开的
    • 资源隔离和分组:使用 cgroups 将 CPU 和内存之类的资源独立分配给每个 Docker 容器