[容器]基础知识

容器是什么?

容器(Container) 是一种轻量化的 应用隔离技术 ,本质是通过 Linux 内核的 命名空间(Namespaces)控制组(cgroups) 实现的进程级虚拟化。

容器将应用程序及其依赖(库、配置文件、环境变量等)打包在一个独立环境中运行,具有以下特点:

特性 说明
轻量化 共享宿主机内核,无需虚拟化硬件,资源占用极低(秒级启动)
隔离性 通过 Namespaces 隔离进程、网络、文件系统等资源
资源限制 通过 cgroups 限制 CPU、内存、磁盘 I/O 等资源使用
一致性 镜像(Image)保证开发、测试、生产环境一致
可移植性 容器镜像可在任意支持容器运行时的平台(Linux/Windows)执行

容器 vs 虚拟机(VM)

容器 虚拟机
虚拟化层级 进程级(共享宿主机内核) 硬件级(通过 Hypervisor 虚拟化)
启动速度 秒级 分钟级
资源占用 低(仅应用所需资源) 高(需分配完整操作系统资源)
隔离性 进程级隔离(较弱) 完全隔离(更强)

容器和 Pod 的关系

1. Pod 是什么?

Pod 是 Kubernetes 中的最小调度单元,由 一个或多个容器 组成,这些容器:

  • 共享网络命名空间 :Pod 内所有容器使用相同的 IP 和端口范围,可通过 localhost 直接通信。
  • 共享存储卷(Volume) :容器可访问同一组持久化存储(如共享配置文件、日志目录)。
  • 生命周期一致:Pod 启动时,内部容器同时创建;Pod 终止时,容器同时销毁。

2. 为什么需要 Pod?

  • 协作场景:若多个容器需紧密协作(如主应用 + 日志收集器、主服务 + Sidecar 代理),通过 Pod 统一管理更方便。
  • 资源复用:共享网络和存储,避免重复配置。
  • Kubernetes 调度基础:Kubernetes 直接管理 Pod 而非单个容器。

3. 容器与 Pod 的关系

  • 层级关系:Pod 是容器的逻辑组合,一个 Pod 包含一个或多个容器。

  • 共享与隔离

    • 共享:网络、存储卷、部分内核命名空间。
    • 隔离:每个容器有独立的文件系统、进程空间(除非显式共享)。

示例场景

plaintext

复制

yaml 复制代码
Pod: "web-server"
├── Container 1: Nginx(主服务,监听 80 端口)
└── Container 2: Filebeat(日志收集器,读取 Nginx 的日志文件)
  • 两个容器共享 Pod 的 IP 和网络,Nginx 可通过 localhost:8080 访问同一 Pod 中的另一个服务。
  • 它们通过共享存储卷(Volume)访问同一日志目录。

Podman 中的 Pod 管理

Podman 支持直接创建和管理 Pod(无需 Kubernetes),命令示例:

bash

复制

perl 复制代码
# 创建一个 Pod(分配共享网络和存储)
podman pod create --name my-pod

# 向 Pod 中添加容器
podman run -d --pod my-pod nginx
podman run -d --pod my-pod filebeat

# 查看 Pod 状态
podman pod ls

总结

概念 容器 Pod
定位 单个应用进程的隔离环境 一组容器的逻辑组合
共享资源 无(默认独立) 网络、存储卷、部分命名空间
使用场景 运行单一服务 管理协作密切的多容器服务组
管理工具 Docker、Podman、containerd 等 Kubernetes、Podman

核心关系

  • Pod 是容器的"逻辑外壳",用于管理协作型容器组。
  • 容器是 Pod 的组成部分,负责实际运行业务逻辑。
相关推荐
步行cgn7 小时前
Spring c 命名空间注入详解
java·后端·spring
明月_清风7 小时前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
明月_清风8 小时前
AI 越来越强,程序员真正的价值到底是什么?
人工智能·后端
aramae8 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
Rain的Java大神之路8 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
码事漫谈9 小时前
别再跟AI说“请”了,它根本不 care——但有个东西它超在意
后端
郑州光合科技余经理11 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
IT_陈寒12 小时前
Vue的响应式让我熬到凌晨三点,原来漏了这个小细节
前端·人工智能·后端
颜进强12 小时前
01 · NestJS 是什么:用途、解决什么问题、与热门框架对比
前端·后端·ai编程
isfox12 小时前
MapReduce Shuffle 深度解析:数据从 Map 到 Reduce 的完整旅程
后端