docker01

Docker

Docker 是基于linux 内核实现,Docker 相比虚拟机的交付速度更快,资源消耗更低,Docker 采用客户端/服务端架构,使用远程API来管理和创建容器,其可以轻松的创建一个轻量级的、可移植的、自给自足的容器,docker 的三大理念是build(构建)、ship(运输)、 run(运行),Docker是开发、运行和部署应用程序的开放管理平台

Docker 架构概述

Docker架构是基于客户端-服务器(C/S)模式的,包含多个关键组件,以确保容器化应用的高效构建、管理和运行。

  • 传统虚拟机是虚拟出一个主机硬件,并且运行一个完整的操作系统 ,然后在这个系统上安装和运行软件。
  • 容器内的应用直接运行在宿主机的内核之上,容器并没有自己的内核,也不需要虚拟硬件,相当轻量化。
  • 每个容器间是互相隔离。每个容器内都有一个属于自己的独立文件系统,独立的进程空间,网络空间,用户空间等,所以在同一个宿主机上的多个容器之间彼此不会相互影响。

docker底层使用的技术介绍

  • Docker使用Go语言实现
  • Docker利用linux内核的几个特性来实现功能:
    1. 利用linux的命名空间(Namespaces)
      Namespaces (命名空间):为Docker容器提供操作系统层面的隔离
      • 进程号隔离: 每一个容器运行的第一个进程, 进程号总是从1开始起算
      • 网络隔离: 容器的网络与宿主机或其他容器的网络是隔离的、分开的, 也就是相当于两个网络
      • 进程间通信隔离: 容器中的进程与宿主机或其它容器中的进程是互相不可见的, 通信需要借助网络
      • 文件系统挂载隔离: 容器拥有自己单独的工作目录
      • 内核以及系统版本号隔离: 容器查看内核版本号或者系统版本号时, 查看的是容器的, 而非宿主机的
    2. 利用linux控制组(control Groups)
      Control Groups : 为Docker容器提供硬件层面的隔离
      • 控制组能控制应用程序所使用的硬件资源.
      • 基于该性质, 控制组帮助docker引擎将硬件资源共享给容器使用,并且加以约束和限制。如控制容器所使用的内存大小。
    3. 利用linux的联合文件系统(Union File system)
      Union File Systems (联合文件系统--UnionFS): 利用分层(layer)思想管理镜像和容器
  • 容器格式( Container Format ) :
    • Docker Engine将namespace、cgroups、UnionFS进行组合后的一个package, 就是一个容器格式(Container Format)。
    • Docker通过对这个package中的namespace、cgroups、UnionFS进行管理控制实现容器的创建和生命周期管理。
    • 容器格式(Container Format)有多种, 其中Docker目前使用的容器格式被称为libcontainer
posted @ 2025-04-12 20:08  fazem  阅读(26)  评论(0)    收藏  举报