1.2 Docker 基础介绍(简单篇)

Docker 是什么

Docker是将发布程序运行所需要的所有环境打包到一起,自动化运行的容器;是一个开源项目,支持大部分的linux发行版,操作系统层以上的虚拟化技术。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 架构图

  1. 组成图
    image

  2. 传统 hypervisor 组成图
    image

  3. 容器 Docker 架构图
    image

Docker 优缺点

对比传统虚拟机Hypervisor和Docker容器组成图:

项目 传统虚拟机 Docker虚拟机
占用空间 "大" GB数量级 "小" M数量级
启动速度 "慢" 分钟级别 "快" 毫秒级别
资源利用率 "低" 一台物理机装多个虚拟操作系统 "高" 一台物理机装一个操作系统启动多个容器
运行基础 "Hypervisor" CPU 虚拟化技术 "linux 内核" linux 内核虚拟化
部署 "复杂" 先装操作系统再装应用 "方便" 直接启动镜像
隔离 操作系统级别 容器级别 基于namespace隔离
相互通信 "简单" 操作系统间通信 "复杂" 容器间通信

Docker 架构图说明:

Docker有以下几个部分组成:

Docker Client客户端 通过Api 访问Docker Daemon 管理Docker 镜像

Docker Daemon 守护进程 负责Docker 镜像的创建、删除、启动、停止等服务

Docker Image镜像 一张 “只读” 的系统CD

Docker Container容器 Docker的容器,Docker Images运行实例。

Docker Registry : Docker Images的仓库,Dock Hub https://www.dockerhub.com

image

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。

Docker 能做什么?

使应用的打包与部署自动化

创建轻量、私密的PAAS环境

实现自动化测试和持续的集成/部署

部署与扩展webapp、数据库和后台服务

Docker 基础概念

Docker 包括三个基本概念

镜像(Image)

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。

容器(Container)

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库(Repository)

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

1.2 Docker 基础介绍(简单篇)

全文结束