[容器]基础知识

容器是什么?

容器(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 的组成部分,负责实际运行业务逻辑。
相关推荐
一条泥憨鱼1 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
2501_933923251 小时前
SpringCloud组件:Eureka服务注册与发现
java·开发语言·后端·spring cloud·eureka
leikooo1 小时前
ARTS 1011: 双堆动态对顶求中位数、IPC 注入与空密码串联接管账户与程序从不做决策
后端
合尘猫1 小时前
AI 项目上线就停:一次事件循环阻塞的完整排查过程
人工智能·后端·python
Re_zero2 小时前
一次 SSE 断流排查:PrintWriter 吞掉了我的 IOException
java·后端
1m555555552 小时前
RAG 工程实战(四):明明召回了正确知识,为什么最终 Top-K 还是漏了?
后端
我是人✓2 小时前
Java核心语法:作用域、循环与大数值处理
java·开发语言·后端
newerp2 小时前
GC Pacer 调优算法:GOGC、GOMEMLIMIT 与容器 OOM 防御
后端·程序员·go
邱杰4702 小时前
数智人事系统(二):一条命令起齐四个中间件
后端