文章目录
- 概念
- docker与虚拟机的差异
- docker的作用
- docker容器虚拟化 与 传统虚拟机比较
- Docker 架构
概念
Docker 是一个开源的应用容器引擎。诞生于 2013 年初,基于 Go 语言实现。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux 机器上。容器是完全使用沙箱机制,相互隔离。容器性能开销极低。Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
docker与虚拟机的差异
docker的作用
容器就是将软件打包成标准化单元,以用于开发、交付和部署。
- 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
- 容器化软件在任何环境中都能够始终如一地运行。
- 容器赋予了软件独立性,使其免受外在环境差异的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突
docker容器虚拟化 与 传统虚拟机比较
相同:
- 容器和虚拟机具有相似的资源隔离和分配优势
不同:
- 容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。
- 传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统
Docker 架构
-
引擎层
-
Docker Daemon:Docker 守护进程,是 Docker 架构的核心组件,它运行在宿主机上,负责处理 Docker客户端发送的各种命令请求,如创建容器、运行容器、管理镜像等。它会监听来自 Docker 客户端的 API 请求,并与底层的 Linux 内核进行交互,实现对容器的创建、启动、停止等操作。
-
Containerd:它是一个守护进程,负责管理容器的生命周期,包括容器的创建、运行、暂停、恢复和销毁等。它与 Docker
Daemon 进行通信,接收并执行相关的容器管理命令。 -
runc:runc 是一个轻量级的工具,用于运行符合 Open Container Initiative(OCI)规范的容器。它是 Containerd 与 Linux 内核之间的桥梁,负责在宿主机上创建和启动实际的容器进程。
-
-
镜像与仓库
-
Docker Image:镜像是 Docker 容器的基础,它是一个只读的模板,包含了运行一个容器所需的所有文件系统内容,如操作系统、应用程序、库和配置文件等。镜像可以通过 Dockerfile 进行构建,用户可以在 Dockerfile 中定义镜像的内容和配置。
-
Docker Registry:镜像仓库用于存储和管理 Docker 镜像,用户可以将自己构建的镜像推送到镜像仓库,也可以从镜像仓库中拉取所需的镜像。Docker Hub 是官方的公共镜像仓库,同时用户也可以搭建私有的镜像仓库。
-
容器(Container) :镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
-
-
客户端层
-
Docker Client:Docker 客户端是用户与 Docker 系统进行交互的接口,用户可以通过命令行工具(如 docker 命令)或图形化界面工具来操作 Docker。客户端负责向 Docker Daemon 发送请求,并接收 Daemon 返回的结果。
-
Docker Compose:它是一个用于定义和运行多容器 Docker 应用的工具,用户可以通过一个 YAML 文件来定义多个容器之间的关系、配置和依赖,然后使用一条命令就可以启动、停止和管理整个应用栈。
-