1 Docker 简介

容器与管理程序虚拟化

  • 管理程序虚拟化通过中间层将独立的机器虚拟运行于物理硬件上。
  • 容器则直接运行在操作系统内核之上的用户空间。

容器也被称为“操作系统级虚拟化”,容器技术让多个独立的用户空间运行在同一台宿主机上。

Docker

Docker是一个能把应用程序自动部署到容器的开源引擎。它在虚拟化的容器执行的环境中增加了一个应用程序部署引擎。
Docker极其简洁,所需环境仅为一台安装了兼容版本Linux内核和二进制文件最小限的宿主机。

Docker为我们提供了

  • 简单轻量的建模方式
    上手快,启动快,高性能,低开销。

  • 职责逻辑分离
    开发只需关心容器中的应用程序;运维只需关心管理容器;同时还方便统一运行环境,避免“在我机器上没问题”的情况。

  • 高效的开发生命周期
    从开发、测试到部署,让你的程序具备可移植性,易于构建,易于协作。

  • SOA友好
    Docker推荐单个容器只运行一个应用程序或进程,构建分布式应用程序模型。

Docker核心组件

  • Docker客户端与服务端,即Docker引擎

    • Docker是CS架构的程序
    • Docker向服务器或守护进程发请求,由服务器或守护进程处理完成后响应
    • Docker守护进程也叫Docker引擎
    • Docker提供了一套docker命令行工具以及一套RESTful API与Docker引擎交互
  • Docker镜像

    • 镜像是构建Docker世界的基石
    • 基于镜像创建容器
    • 可以把镜像当作容器的“源代码”
    • 镜像体积小,易于分享
  • Registry

    • 用来保存用户构建的镜像
    • 官方公共Registry是Docker Hub
    • 国内的加速镜像是https://registry.docker-cn.com
    • 用户还可以架设自己的私有Registry
  • Docker容器

    • 一个镜像格式
    • 一系列标准的操作
    • 一个执行环境

Docker能用来做什么

容器天生自带了“标准性”的特征,很适合为服务创建构建块。Docker的一些使用场景:

  • 加速本地开发和构建流程。开发人员可构建、运行并分享Docker容器。容器可以在开发环境中构建,然后提交到测试环境,最终进入生产环境
  • 可以让独立服务或应用程序在不同环境中,得到相同结果
  • 用Docker创建隔离的环境来进行测试。如Jenkins CI持续集成工具启动一个用于测试的容器
  • 构建一个多用户的平台即服务(PaaS)基础设施
  • 提供软件即服务(SaaS)应用程序
  • 高性能、超大规模的宿主主机部署
  • 等等

Docker的技术组件

Docker可运行在任何安装了现代Linux内核的x64主机上。推荐内核版本3.8以上。Docker开销低,可用于服务器、台式机或笔记本电脑。它包括以下几个部分:

  • 一个原生Linux容器格式,Docker中称为libcontainer
  • Linux内核的命名空间,用于隔离文件系统、进程和网络
  • 文件系统隔离:每个容器都有自己的root文件系统
  • 进程隔离:每个容器都运行在自己的进程环境中
  • 网络隔离:容器间的虚拟网络接口和IP地址都是分开的
  • 资源隔离和分组:使用cgroups(即control group,Linux的内核特性之一)将CPU和内存之类的资源独立分配给每个Docker容器
  • 写时复制:文件系统都是通过写时复制创建的,这意味着文件系统时分层的、快速的,而且占用磁盘空间更小
  • 日志:容器产生的STDOUT、STDERR和STDIN这些IO流都会被收集并记入日志,用于日志分析或排错
  • 交互式shell:用户可创建一个伪tty终端,将其连接到STDIN,为容器提供一个交互式shell

写了这么多干巴巴的文字,下一篇就开始进入实用环节。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容