1 虚拟化技术

因为 Docker 的容器化技术是虚拟化的一种体现形式,因此 我们要学习容器化技术之前,需要先来了解一下什么是虚拟化技术:

1.1 什么是虚拟化技术
  • 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
  • 虚拟化技术种类很多,例如:软件虚拟化、硬件虚拟化、内存虚拟化、网络虚拟化(vip)、桌面虚拟化、服务虚拟化、虚拟机等等。在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件对资源充分利用
1.2 虚拟化常见架构
1.2.1 全虚拟化架构
  • 虚拟机的监视器(hypervisor)是类似于用户的应用程序运行在主机的 OS 之上,如 VMware 的 workstation,这种虚拟化产品提供了虚拟的硬件
    Docker 容器化技术(介绍)
1.2.2 OS 层虚拟化架构

Docker 容器化技术(介绍)

1.2.3 硬件层虚拟化

Docker 容器化技术(介绍)

  • 硬件层的虚拟化具有高性能和隔离性,因为 hypervisor 直接在硬件上运行,有利于控制 VM 的 OS 访问硬件资源,使用这种解决方案的产品 有 VMware ESXi 和 Xen server Hypervisor 是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚 拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor,VMM)。 Hypervisor 是所有虚拟化技术的核心。当服务器启动并执行 Hypervisor 时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加 载所有虚拟机的客户操作系统。 宿主机 Hypervisor 是所有虚拟化技术的核心,软硬件架构和管理更高效、更灵活,硬件的效能能够更好地发挥出来。常见的产品有:VMware、KVM、 Xen 等等。Openstack

2 Docker 简介

2.1 什么是 Docker

Docker 容器化技术(介绍)

  • 在计算机的世界中,容器拥有一段漫长且**的历史。容器与管理程序虚拟化(hypervisor virtualization,HV)有所不同,管理程序虚拟化通 过中间层将一台或者多台独立的机器虚拟运行与物理硬件之上,而容器则是直接运行在操作系统内核之上的用户空间。因此,容器虚拟化也被称 为“操作系统级虚拟化”,容器技术可以让多个独立的用户空间运行在同一台宿主机上。 由于“客居”于操作系统,容器只能运行与底层宿主机相同或者相似的操作系统,这看起来并不是非常灵活。例如:可以在 Ubuntu 服务中运 行 Redhat Enterprise Linux,但无法再 Ubuntu 服务器上运行 Microsoft Windows。 相对于彻底隔离的管理程序虚拟化,容器被认为是不安全的。而反对这一观点的人则认为,由于虚拟容器所虚拟的是一个完整的操作系统, 这无疑增大了攻击范围,而且还要考虑管理程序层潜在的暴露风险。 尽管有诸多局限性,容器还是被广泛部署于各种各样的应用场合。在超大规模的多租户服务部署、轻量级沙盒以及对安全要求不太高的隔离 环境中,容器技术非常流行。最常见的一个例子就是“权限隔离监牢”(chroot jail),它创建一个隔离的目录环境来运行进程。如果权限隔离监牢 正在运行的进程被入侵者攻破,入侵者便会发现自己“身陷囹圄”,因为权限不足被困在容器所创建的目录中,无法对宿主机进一步破坏。 最新的容器技术引入了 OpenVZ、Solaris Zones 以及 Linux 容器(LXC)。使用这些新技术,容器不在仅仅是一个单纯的运行环境。在自己的 权限类内,容器更像是一个完整的宿主机。对 Docker 来说,它得益于现代 Linux 特性,如控件组(control group)、命名空间(namespace)技术, 容器和宿主机之间的隔离更加彻底,容器有独立的网络和存储栈,还拥有自己的资源管理能力,使得同一台宿主机中的多个容器可以友好的共存。 容器被认为是精益技术,因为容器需要的开销有限。和传统虚拟化以及半虚拟化相比,容器不需要模拟层(emulation layer)和管理层(hypervisor layer),而是使用操作系统的系统调用接口。这降低了运行单个容器所需的开销,也使得宿主机中可以运行更多的容器。 尽管有着光辉的历史,容器仍未得到广泛的认可。一个很重要的原因就是容器技术的复杂性:容器本身就比较复杂,不易安装,管理和自动 化也很困难。而 Docker 就是为了改变这一切而生的
2.2 虚拟化技术和 Docker 的区别
2.2.1 本质上区别

Docker 容器化技术(介绍)

2.2.2 使用上的区别

Docker 容器化技术(介绍)

3 Docker 组件

3.1 Docker 客户端和服务器

Docker 容器化技术(介绍)

  • Docker 是一个客户端-服务器(C/S)架构程序。Docker 客户端只需要向 Docker 服务器或者守护进程发出请求,服务器或者守护进程将完成 所有工作并返回结果。Docker 提供了一个命令行工具 Docker 以及一整套RESTful API。你可以在同一台宿主机上运行 Docker 守护进程和客户端, 也可以从本地的 Docker 客户端连接到运行在另一台宿主机上的远程 Docker 守护进程
3.2 Docker 镜像
  • 镜像是构建 Docker 的基石, 其中包括了容器的文件系统结构与内容,它与 docker 的配置文件共同组成了 docker
    容器的静态文件系统环境. 用 户基于镜像来运行自己的容器
3.3 注册中心
  • 我们从何处去获得镜像?如果我们是第一次通过某个镜像去启动容器,首先宿主机回去/var/lib/docker 目录下去找,如果没有找到,则会去 registry 中去下载镜像并且存放于虚拟机,然后完成启动。 registry 可以想象为一个镜像的仓库,默认的 registry 是 docker 官方提供的 registry 服务,名为 Docker Hub。当然,你也可以构建自己的镜像仓库。
3.4 注册中心

容器就是镜像的运行实例。 用户可以通过命令行或是 API 启动、停止、移动或删除容器。可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器 则是启动和运行阶段

相关文章: