容器——容器概述

容器概述

容器发展简史

互联网企业生产环境的应用部署经历了三个阶段:

1. 物理机部署时代

请添加图片描述

  • 特点
    • 使用纯粹的物理机部署应用。
    • 一台服务器上部署多个应用进程(如 DB、缓存进程等)。
  • 问题
    • 进程间资源抢占,导致资源耗尽或磁盘满等问题。
    • 资源隔离不足,单个进程异常可能影响其他进程。

2. 虚拟机部署时代

请添加图片描述

  • 特点
    • 通过硬件虚拟化,每台虚拟机分配固定的 CPU、内存、磁盘资源。
    • 每台虚拟机通常只部署一个应用。
  • 优点
    • 解决了进程间资源隔离的问题。
  • 缺点
    • 软件版本和配置文件容易碎片化,导致管理复杂。

3. 容器部署时代

请添加图片描述

  • 特点
    • 使用容器技术(如 Docker),通过镜像文件实现应用部署。
    • 所有容器共享相同的基础镜像,确保环境一致性。
  • 优点
    • 解决了虚拟机部署中的软件版本碎片化问题。
    • 容器销毁后,修改的内容不会保留,确保环境一致性。

虚拟机与容器

1. 名词解释

① 虚拟机
  • 定义:通过软件模拟的具有完整硬件系统功能的计算机系统。
  • 特点
    • 每个虚拟机有独立的操作系统和硬件资源。
    • 启动慢,占用资源多。
  • 代表技术:VMWare、OpenStack。
② 容器
  • 定义:将操作系统层虚拟化,是一个标准的软件单元。
  • 特点
    • 随处运行:打包代码、配置和依赖,确保环境一致性。
    • 高资源利用率:进程级隔离,精细控制资源使用。
    • 快速扩展:启动速度快,适合弹性伸缩。

2. 容器技术与虚拟机技术对比

请添加图片描述


Docker 基础概念

1. 仓库(Repository)

  • 定义:用于存储和分发 Docker 镜像的地方。
  • 类型
    • 公共仓库(如 Docker Hub)。
    • 私有仓库(如 Harbor)。

2. 镜像(Image)

  • 定义:一个只读的模板,包含运行容器所需的文件系统和配置。
  • 特点
    • 分层存储,支持增量更新。
    • 通过 Dockerfile 构建。

3. 容器(Container)

  • 定义:镜像的运行实例,包含一个可写层。
  • 特点
    • 独立运行,与其他容器隔离。
    • 生命周期短暂,销毁后数据丢失(除非使用卷)。

Docker 架构

请添加图片描述

  • 客户端-服务器架构
    • Docker 客户端:提供命令行工具,与用户交互。
    • Docker 守护进程(Daemon):在宿主机后台运行,管理容器和镜像。
  • 通信方式
    • 通过 Socket 或 RESTful API 进行通信。

Docker 容器卷

1. 卷的设计目的

  • 数据持久化:确保数据在容器删除后仍然保留。
  • 独立于容器生命周期:卷的生命周期与容器无关。

2. 卷的特性

  • 数据共享:多个容器可以挂载同一个卷。
  • 实时更新:对卷的修改会立即生效。
  • 与镜像分离:卷中的数据不会被打包到镜像中。

3. 卷的使用场景

  • 数据库存储。
  • 日志存储。
  • 配置文件共享。
  • 数据备份。

4. 卷的类型

  • 命名卷(Named Volume)
    • 由 Docker 管理,具有唯一名称。
    • 创建命令:docker volume create my_volume
  • 绑定挂载(Bind Mount)
    • 将主机目录挂载到容器中。
    • 挂载命令:docker run -v /host/path:/path/in/container my_image

5. 卷的管理命令

  • 创建卷:docker volume create my_volume
  • 查看卷列表:docker volume ls
  • 查看卷详情:docker volume inspect my_volume
  • 删除卷:docker volume rm my_volume

Dockerfile 构建

1. 基础镜像

  • FROM 指令:指定基础镜像,Docker 从该镜像开始构建。

2. 指令执行

  • 顺序执行:Dockerfile 中的指令从上到下依次执行。
  • 创建临时容器:每条指令在临时容器中执行。
  • 提交新层:如果指令改变了文件系统,Docker 会提交这些更改为新的镜像层。

3. 缓存利用

  • 加速构建:Docker 会重用缓存中的层,避免重复执行指令。

4. 构建完成

  • 最终镜像:所有指令执行完毕后,生成最终的镜像。
  • 清理中间层:构建过程中创建的中间容器和镜像层会被清理。

Docker 特性

1. 轻量级虚拟化

  • 特点:启动速度快,资源占用小。
  • 优势:适合快速启停的应用场景。

2. 标准化构建与部署

  • 特点:使用 Dockerfile 定义应用环境,构建过程标准化。
  • 优势:简化了应用打包和部署流程。

3. 环境隔离与一致性

  • 特点:每个容器运行在独立的环境中,确保环境一致性。
  • 优势:解决了“在我机器上能运行”的问题。

4. 高效的镜像管理

  • 特点:镜像分层存储,支持版本管理。
  • 优势:节省存储空间,便于分发和回滚。

5. 横向扩展与弹性伸缩

  • 特点:容器启动速度快,适合横向扩展。
  • 优势:适合应对流量峰谷的应用场景。

6. 轻量级 PaaS 环境

  • 特点:可以快速构建轻量级、私密的 PaaS 环境。
  • 优势:简化了 PaaS 环境的搭建和管理。

容器与 Linux 启动过程

请添加图片描述

1. 典型的 Linux 启动过程

  • BootFS:包含 bootloader 和内核,启动后卸载。
  • RootFS:包含操作系统的核心文件,挂载为只读后切换为读写。

2. Docker 容器的启动过程

  • BootFS:通常共享宿主机的内核,BootFS 不常用。
  • RootFS:由多个只读镜像层组成,容器层为可写。
  • 容器层:所有对文件系统的修改都发生在这里。

3. Docker 容器与典型 Linux 启动过程的区别

特性典型 Linux 启动过程Docker 容器启动过程
BootFS包含 bootloader 和内核通常共享宿主机的内核
RootFS挂载为只读后切换为读写由多个只读镜像层组成
文件系统完整的文件系统联合文件系统
内核使用自己的内核通常共享宿主机的内核
隔离性无隔离通过命名空间和控制组实现隔离
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值