[容器]基础知识

容器是什么?

容器(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 的组成部分,负责实际运行业务逻辑。
相关推荐
*愿风载尘*6 分钟前
ksql连接数据库免输入密码交互
数据库·后端
溟洵12 分钟前
Qt 窗口 工具栏QToolBar、状态栏StatusBar
开发语言·前端·数据库·c++·后端·qt
ppo9223 分钟前
MCP简单应用:使用SpringAI + Cline + DeepSeek实现AI创建文件并写入内容
人工智能·后端
创码小奇客31 分钟前
Talos 使用全攻略:从基础到高阶,常见问题一网打尽
java·后端·架构
Re27531 分钟前
ThreadLocal 入门:搞懂线程私有变量
后端
midsummer_woo1 小时前
基于spring boot的纺织品企业财务管理系统(源码+论文)
java·spring boot·后端
zc-code2 小时前
Spring Boot + @RefreshScope:动态刷新配置的终极指南
java·spring boot·后端
何中应2 小时前
EasyExcel使用(二:写出)
java·后端·maven·excel
苏三说技术3 小时前
千万级的大表如何新增字段?
后端
外滩运维专家3 小时前
后端开发必备:生产环境异常自动电话通知方案
后端·程序员