Docker 简介

code

Docker 简介

原理

Docker 使用 Linux 中各种隔离技术,为每一个进程提供一个独立的容器:

  • Namespaces:为进程树、网络接口、挂载点进行隔离,实现进程间的通信
  • CGroups:隔离 CPU、内存、磁盘 I/O、网络带宽
  • Unionfs:联合文件系统、镜像

Namespaces

NameSpaces 工具可以对进程进行隔离

namespaces
namespaces

宿主机是运行着 Docker 引擎的主机,沙箱即容器,通过 Docker 创建的隔离的空间,独立地运行着各种进程。

通过网桥模式对网络进行隔离:为每一个容器创建一个虚拟网卡

网桥模式
网桥模式

CGroups

CGroups 工具隔离共享的资源,如 CPU、内存、磁盘 I/O、网络带宽等,而每一容器进行配容,限制其调用共享资源的额度。

CGroups
CGroups

Unionfs

Unionfs 将文件系统中相同部分和不同部分分别处理,然后通过联合文件系统将这些文件以叠加的方式挂载起来,构成一个完整的文件系统供不同容器使用,同时节省出大量的磁盘空间。

Unionfs
Unionfs

文件系统中只读层称为镜像,可写层称为容器

镜像与容器
镜像与容器

Tip

Docker 提供一个容器,相对于虚拟机更有优势。

VM VS. Container
VM VS. Container

虚拟机方案:对于每个虚拟机都需要一个独立的操作系统 Guest OS

Dock 方案:共享一个系统 Host OS,通过 Docker 引擎为每一个用户分配独立的容器,更节省资源

Tip

虚拟机有一个独立的操作系统,启动后会一直运行;Docker 则在命令运行结束后就退出容器,下次需要执行命令时,再重新创建容器。

架构

Docker 的基本架构是 Client-Server 客户端-后台结构

architecture
architecture

  • Client 与用户进行交互,接受输入命令,管理容器、镜像,还有运行程序
  • Server 创建容器,需要先拉取镜像,优先从本地拉取,本地没有就到 Registry 拉取
  • Registry 镜像托管仓库

Copyright © 2024 Ben

Theme BlogiNote

Icons from Icônes