Docker学习笔记(一)

Docker学习笔记(一)

什么是Docker

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
简而言之,就是主要的关键在于Docker容器没有虚拟宿主机的操作系统,直接使用的宿主机的内核。

Docker学习笔记(一)_第1张图片

Docker学习笔记(一)_第2张图片

Docker引擎

Docker 引擎是一个包含以下主要组件的客户端服务器应用程序。

  • 一种服务器,它是一种称为守护进程并且长时间运行的程序。
  • REST API用于指定程序可以用来与守护进程通信的接口,并指示它做什么。
  • 一个有命令行界面 (CLI) 工具的客户端。

Docker 引擎组件的流程如下图所示:

img

Docker 系统架构

  • Docker 使用**客户端-服务器 (C/S) **架构模式,使用远程 API 来管理和创建 Docker 容器。
  • Docker 容器通过 Docker 镜像来创建。
  • 容器(对象)与镜像(类)的关系类似于面向对象编程中的对象与类。
  • Client客户端通过docker API与远程Docker服务主机的Docker守护进程通信,进而操作
  • Docker仓库(Registry)是用来保存Docker镜像的
    其系统架构图如下所示:
    在这里插入图片描述

你可能感兴趣的:(Docker)