abdul4rehman215/Red-Hat-Certified-Specialist-in-Containers
GitHub: abdul4rehman215/Red-Hat-Certified-Specialist-in-Containers
一套包含 40 个动手实验的容器工程实战作品集,覆盖 Podman、镜像工程、Compose 编排、Kubernetes 部署与安全加固等生产级技能。
Stars: 0 | Forks: 0
# 🐳 Red Hat 容器认证专家 - 📦 容器、Podman 与 Kubernetes 工程作品集
### 一套完整的 40 个实验的实战容器工程系列,从 Podman 基础逐步深入到安全的微服务部署与 Kubernetes 编排。
### 模拟真实的 DevOps、平台工程与 DevSecOps 工作流。
) | Redis + Flask |
### 🛠 展示的技能
- 服务依赖管理
- 水平扩展
- 容器间通信
- 通过 Compose 进行环境注入
## 🔹 第 1.6 节:Kubernetes 部署 (实验 18–20)
# 🗂 仓库结构
```
Red-Hat-Certified-Specialist-in-Containers/
├── 🔹 Container & Kubernetes Engineering (Labs 1–20)
├── 🔹 Secure Container Engineering (Labs 21–40)
└── README.md
```
## 🧱 标准实验文件夹结构
每个实验遵循一致的专业结构:
```
labXX-lab-name/
README.md # Objectives, theory, step-by-step guide
commands.sh # Executed commands (copy/paste runnable)
output.txt # Real command outputs (validation evidence)
interview_qna.md # Interview-ready questions & answers
troubleshooting.md # Common issues + fixes
*.yml / *.yaml # Kubernetes / Compose manifests (where applicable)
Dockerfile/Containerfile # Builds (where applicable)
scripts/ # EntryPoint scripts, helpers (where applicable)
```
# 🎓 40 个实验的学习成果
在完成这 40 个实验的工程系列后,本仓库展示了以下能力:
- 使用 **Podman(rootless 与 rootful)** 设计和管理容器
- 使用 **Containerfiles 与多阶段构建** 构建优化的、可重现的镜像
- 实施 **层缓存策略与运行时配置模式**
- 部署和管理 **带有持久化存储的有状态数据库容器**
- 在容器化环境中执行 **备份与恢复工作流**
- 使用 **带有依赖控制的 Compose** 编排多服务技术栈
- 使用 **Pods、StatefulSets、PVCs、Services 与 Ingress** 设计 Kubernetes 工作负载
- 应用 **最小权限安全与支持 SELinux 的卷处理**
- 管理 registry 工作流(标记、推/拉、保存/加载、签名)
- 使用日志、统计、namespace 与 SELinux 调试诊断生产问题
这是以执行为导向的容器工程——而非理论演练。
# 🌍 真实世界对齐
这些实验模拟了企业容器和 Kubernetes 工作流,包括:
- 镜像构建流水线与生产优化
- 安全的微服务架构(Flask + PostgreSQL)
- 多容器依赖管理
- Kubernetes 工负载生命周期管理
- 服务暴露策略(ClusterIP、NodePort、Ingress)
- Secrets 管理与容器加固
- 生产调试与运营验证
与以下真实角色对齐:
- DevOps 工程
- 平台工程
- Red Hat / OpenShift 容器环境
- 云原生基础设施运营
- DevSecOps 容器安全实践
# 🧪 真实世界模拟模型
所有实验均在受控的 Linux 环境中执行,旨在模拟真实的 DevOps 和平台工程工作流:
- 镜像构建 → 优化 → 验证 → 部署
- 持久化数据 → 备份 → 恢复 → 验证
- Compose 编排 → 依赖解析 → 扩展
- Kubernetes 部署 → 暴露 → 监控 → 故障排查
- 安全 → 扫描 → 签名 → 验证
重点是跨容器运行时、网络、存储、编排和安全层的实际实施。
# 📊 容器工程技能热力图
此热力图反映了 **跨 40 个实验的动手实施**:
**容器运行时 • 镜像工程 • 有状态架构 • 编排 • Kubernetes • DevSecOps 加固 • 生产故障排查**
| 技能领域 | 接触程度 | 实践深度 | 使用的工具 / 技术 |
|------------|---------------|----------------|---------------------------|
| 🐳 容器运行时管理 | ██████████ 100% | rootless/rootful 执行、pods、生命周期控制 | Podman 4.9.3 |
| 🏗 镜像工程与优化 | ██████████ 100% | 多阶段构建、缓存、层最小化 | Containerfile、Dockerfile、podman build |
| 🔐 安全容器设计 | █████████░ 90% | 非 root USER、最小权限、镜像扫描与签名 | SELinux、podman scan、trust |
| 💾 有状态工作负载与持久化 | ██████████ 100% | Volumes、bind mounts、数据库持久化、备份/恢复 | MySQL、PostgreSQL、Redis |
| 🔄 多容器编排 | █████████░ 90% | 服务依赖控制、扩展、环境注入 | podman-compose |
| ☸ Kubernetes 工作负载部署 | ██████████ 100% | Pods、Services、StatefulSets、PVCs | kubectl、podman play kube |
| 🌐 服务暴露与网络 | ██████████ 100% | ClusterIP、NodePort、Ingress 路由 | Kubernetes、NGINX Ingress |
| 🧰 运行时调试与诊断 | ██████████ 100% | 日志、检查、统计、namespace 调试 | podman logs、inspect、nsenter |
| 🏷 Registry 与镜像生命周期操作 | █████████░ 90% | 标记、推/拉、保存/加载、digest 验证 | Docker Hub、UBI |
| 🛡 DevSecOps 容器加固 | █████████░ 90% | Secrets 管理、SELinux 标记、策略验证 | podman secrets、ausearch |
## 🏁 熟练度量表
- ██████████ = 带有验证与部署的端到端实施
- █████████░ = 高级实践实施
- ███████░░░ = 扎实的可用实施
- █████░░░░░ = 基础 + 应用接触
此热力图反映了**平台级的容器工程能力**,而非孤立的镜像构建——涵盖:
## 🧪 如何使用
```
git clone https://github.com/abdul4rehman215/Red-Hat-Certified-Specialist-in-Containers.git
cd Red-Hat-Certified-Specialist-in-Containers
# 打开任意 lab
cd labXX-name
# 按照步骤操作
cat README.md
bash commands.sh
cat output.txt
```
# 🔐 执行环境
所有实验均在受控的 Linux 环境中执行,旨在模拟真实的 DevOps、平台工程和容器化生产工作流。
### 环境特征
- Ubuntu 20.04 / 22.04 LTS
- 兼容 RHEL 的环境(Podman 原生工作流)
- Podman 4.9.3(rootless 与 rootful)
- Kubernetes(基于集群的测试与本地环境)
- 容器化数据库(MySQL、PostgreSQL、Redis)
- 使用 Compose 进行多容器编排
- 启用 SELinux 的系统,用于卷和安全验证
工作流包括使用生产级命令和工具进行的真实镜像构建、有状态部署、服务暴露、调试和验证。
所有输出均通过运行时检查、日志、持久化检查和部署验证步骤进行了验证。
# 🎯 预期用途
本仓库旨在展示和支持:
- 容器工程技能发展
- DevOps 与平台工程工作流
- Kubernetes 工作负载部署实践
- 安全容器开发(最小权限与 secrets 处理)
- 有状态服务架构与持久化设计
- 生产级调试与运营验证
所有示例、配置和工作流仅适用于:
- 教育目的
- 专业技能发展
- 基于实验室的基础设施测试
- 认证准备(Red Hat / Kubernetes 路径)
仅在批准的实验室或开发环境中负责任地执行。
# ⚖️ 道德与法律声明
本仓库中的所有容器部署、配置和测试均在以下环境中执行:
- 受控的实验室环境
- 本地部署或授权的系统
- 使用自行配置的基础架构和数据集
未访问未经授权的系统。
未针对生产系统。
所展示的技术——包括容器网络、编排、registry 操作和调试——仅用于:
- 基础设施工程实践
- 安全软件部署
- DevOps 与 DevSecOps 教育
- 云原生系统开发
不支持在合法批准的环境之外滥用。
本仓库仅出于教育、专业发展和负责任的工程目的提供。
## 🌐 发布在 LinkedIn 上的实验室作品集
我还在 LinkedIn 上分享了这个实验系列作品集,包含了简洁的作品集总结、核心亮点以及实施背景。
[](https://www.linkedin.com/posts/abdul4rehman215_red-hat-certified-specialistincontainerslabsrepoportfolio-activity-7450203804391718912-bn8F?)
## ⭐ 结语
本仓库反映了 **真实的、以执行为导向的容器工程** ——
逐步深入:
容器工程不仅仅是运行镜像。
它是 **可重复性 + 安全性 + 可观测性 + 运营纪律。** 🐳
如果这个作品集为你带来了价值,请考虑为仓库加星 ⭐
## 👨💻 作者
**Abdul Rehman**
容器工程 • Podman • Kubernetes • DevOps • DevSecOps
### 📧 联系方式





























# 🚀 执行摘要
这是一套包含 40 个实验的、以执行为导向的容器工程作品集,展示了在 Podman、Compose 和 Kubernetes 生态系统中的生产级能力。
本仓库展示了以下方面的实用专业技能:
- Podman 容器生命周期管理
- 生产级镜像工程与优化
- 有状态工作负载(MySQL、PostgreSQL、Redis)
- 多容器编排
- Kubernetes Pods、StatefulSets、Services 与 Ingress
- 安全的容器开发(非 root 用户、最小权限)
- Registry 操作、镜像签名与扫描
- Secrets 处理与 SELinux 故障排查
- 生产级调试与微服务部署
这是应用型的平台工程——而非理论性的容器教程。
## 🧠 作品集范围
本仓库模拟了真实世界的容器与 Kubernetes 工程工作流——从镜像构建和状态持久化,到多服务编排与安全的产生部署。
它反映了与以下领域对齐的实操能力:
- DevOps 工程
- 平台工程
- Red Hat / OpenShift 容器环境
- 云原生基础设施实践
- DevSecOps 容器加固
## 📌 关于本仓库
这是一个结构化的 40 个实验的容器工程项目,从 Podman 基础逐步深入到安全的微服务部署和 Kubernetes 编排。
这些实验模拟了:
- 容器构建流水线与镜像优化
- 持久化数据库部署与备份工作流
- 网络设计与服务暴露
- 使用 Compose 进行多服务编排
- Kubernetes 工作负载架构(Pods、StatefulSets、PVCs)
- 安全的容器加固与 secrets 管理
- 生产级故障排查与验证
所有实验均在受控的 Linux 环境中执行,使用真实的容器、真实的数据库、真实的网络和真实的调试实践。
每个实验包含:
- 命令执行步骤
- Containerfiles / YAML manifests
- 运行时验证输出
- 日志与检查证据
- 故障排查文档
- 与企业环境对齐的工作流模拟
## 📚 实验索引 (1–40)
# 🗂 实验架构概述
# 📦 第 1 部分 – 容器与 Kubernetes 工程 (实验 1–20)
### 进度:
### 容器 → 镜像工程 → 持久化 → Compose → Kubernetes → StatefulSets → 服务暴露
## 🔹 第 1.1 节:容器基础 (实验 1–5)



| 实验 | 标题 | 焦点 |
|-----|-------|-------|
| 01 | [容器简介](lab01-introduction-to-containers) | 隔离与生命周期 |
| 02 | [探索 Podman CLI](lab02-exploring-podman-cli) | 运行时管理 |
| 03 | [运行容器](lab03-running-containers-with-podman) | 后台模式与端口 |
| 04 | [创建与管理 Pods](lab04-creating-and-managing-pods) | Pod 架构 |
| 05 | [管理容器镜像](lab05-managing-container-images) | 拉取、检查、移除 |
### 🛠 展示的技能
- 容器生命周期管理
- 镜像元数据检查
- 端口发布
- Pod 网络基础
- 支持 SELinux 的卷处理
## 🔹 第 1.2 节:镜像工程 (实验 6–9)



| 实验 | 标题 | 焦点 |
|-----|-------|-------|
| 06 | [构建自定义镜像](lab06-building-custom-container-images) | Containerfile 编写 |
| 07 | [层缓存与优化](lab07-layer-caching-and-optimization) | 构建效率 |
| 08 | [环境变量](lab08-environment-variables-in-images) | 运行时注入 |
| 09 | [ENTRYPOINT 与 CMD](lab09-entrypoint-and-cmd) | 执行控制 |
### 🛠 展示的技能
- 层合并
- 缓存优化
- 多阶段构建
- 运行时覆盖设计
- 信号安全的 entrypoints
## 🔹 第 1.3 节:持久化与有状态容器 (实验 10–12)



| 实验 | 标题 | 焦点 |
|-----|-------|-------|
| 10 | [使用 Volumes 持久化数据](lab10-persisting-data-with-volumes) | 命名 volumes |
| 11 | [运行有状态容器](lab11-running-stateful-containers) | MySQL/Postgres |
| 12 | [备份与恢复数据](lab12-backup-and-restore-data) | mysqldump 工作流 |
### 🛠 展示的技能
- 持久化存储设计
- 数据库容器配置
- 备份/恢复自动化
- 主机-容器数据策略
## 🔹 第 1.4 节:调试与网络 (实验 13–15)



| 实验 | 标题 | 焦点 |
|-----|-------|-------|
| 13 | [容器故障排查](lab13-troubleshooting-containers) | 日志与检查 |
| 14 | [容器中的网络](lab14-networking-in-containers) | 网桥与自定义网络 |
| 15 | [远程调试](lab15-remote-debugging-of-containers) | VS Code 集成 |
### 🛠 展示的技能
- 运行时诊断
- 自定义网络创建
- 调试端口暴露
- 资源监控
## 🔹 第 1.5 节:多容器编排 (实验 16–17)



| 实验 | 标题 | 焦点 |
|-----|-------|-------|
| 16 | [Compose 基础](lab16-compose-basics) | YAML 编排 |
| 17 | [带有依赖的 Compose](



| 实验 | 标题 | 焦点 |
|-----|-------|-------|
| 18 | [Kubernetes Pod 部署](lab18-kubernetes-pod-deployment) | YAML 与 kubectl |
| 19 | [部署 StatefulSets](lab19-deploying-statefulsets) | PVC 与 Headless Services |
| 20 | [Service 与 Ingress 设置](lab20-service-and-ingress-setup) | 外部暴露 |
### 🛠 展示的技能
- Kubernetes manifest 设计
- 有状态工作负载架构
- PersistentVolumeClaims
- ClusterIP / NodePort / Ingress
- 外部流量路由
# 🔐 第 2 部分 – 安全容器工程 (实验 21–40)
### 进度:
### Containerfile 安全 → 运行时加固 → Registry 操作 → 可观测性 → 编排 → 生产调试 → 安全微服务部署
## 🔹 第 2.1 节:Containerfile 基础 (实验 21–27)



| 实验 | 标题 | 重点领域 |
|-----|-------|------------|
| 21 | [理解 FROM 指令](lab21-understanding-from-instruction) | 镜像固定与可重复性 |
| 22 | [高效使用 RUN 指令](lab22-using-run-instruction-efficiently) | 层最小化与缓存 |
| 23 | [ADD 与 COPY 指令](lab23-add-vs-copy-instruction) | 安全的文件注入实践 |
| 24 | [WORKDIR 与 USER 指令](lab24-setting-workdir-and-user-instructions) | 非 root 容器设计 |
| 25 | [使用最小权限保护镜像](lab25-securing-images-with-least-privilege) | 加固与攻击面减少 |
| 26 | [CMD 与 ENTRYPOINT](lab26-cmd-vs-entrypoint-instructions) | 执行行为控制 |
| 27 | [参数化 Entrypoint 脚本](lab27-parameterized-entrypoint-scripts) | 运行时灵活性与脚本编写 |
### 🛠 展示的技能
- 生产级 Containerfile 编写
- 使用固定镜像进行可重复构建
- 层优化与缓存控制
- 安全的文件处理(COPY 优于 ADD 的最佳实践)
- 强制非 root 容器
- 信号安全的 entrypoint 脚本编写
- 运行时参数注入
## 🔹 第 2.2 节:网络、环境与存储 (实验 28–30)



| 实验 | 标题 | 重点领域 |
|-----|-------|------------|
| 28 | [EXPOSE 与端口绑定](lab28-expose-and-port-binding) | 主机 ↔ 容器网络 |
| 29 | [ENV 与环境变量](lab29-using-env-and-environment-variables) | 运行时配置注入 |
| 30 | [容器 Volumes 与 Bind Mounts](lab30-container-volumes-and-bind-mounts) | 持久化存储与 SELinux 标记 |
### 🛠 展示的技能
- 端口发布与 EXPOSE 的区别
- 安全的环境变量管理
- .env 文件处理
- 命名 volumes 与 bind mounts 的对比
- SELinux `:Z` 标记与故障排查
- 运行时配置验证
## 🔹 第 2.3 节:镜像生命周期与 Registry 操作 (实验 31–33)



| 实验 | 标题 | 重点领域 |
|-----|-------|------------|
| 31 | [镜像标记与 Registry 交互](lab31-image-tagging-and-registry-interaction) | 版本控制与推送/拉取工作流 |
| 32 | [备份与恢复镜像](lab32-backup-and-restore-images-and-containers) | 镜像可移植性与灾难恢复 |
| 33 | [使用 Podman 在本地运行容器](lab33-running-containers-locally-with-podman) | 运行时执行模式与覆盖 |
### 🛠 展示的技能
- 语义版本标记
- Registry 身份验证与镜像推送
- 基于 digest 的验证
- `podman save` / `podman load` 工作流
- 运行时用户覆盖
- 前台与后台执行
## 🔹 第 2.4 节:可观测性、检查与 Secrets (实验 34–36)



| 实验 | 标题 | 重点领域 |
|-----|-------|------------|
| 34 | [检索日志与事件](lab34-retrieving-container-logs-and-events) | 运行时可观测性 |
| 35 | [检查容器与镜像](lab35-inspecting-containers-and-images-with-commands) | 元数据提取 |
| 36 | [管理环境文件与 Secrets](lab36-managing-environment-files-and-secrets) | 安全的配置管理 |
### 🛠 展示的技能
- `podman logs` 过滤与跟踪
- `podman events` 监控
- 容器元数据检查
- 提取端口、挂载、环境变量
- Podman secrets 使用
- 安全的 `/run/secrets` 挂载
- 结构化的运行时诊断
## 🔹 第 2.5 节:编排与依赖管理 (实验 37–38)



| 实验 | 标题 | 重点领域 |
|-----|-------|------------|
| 37 | [运行多容器应用](lab37-running-multi-container-applications) | Compose 技术栈部署 |
| 38 | [处理容器依赖](lab38-handling-container-dependencies) | 健康检查与服务协调 |
### 🛠 展示的技能
- 多容器网络
- 服务依赖处理
- 基于健康的启动控制
- entrypoints 中的重试逻辑
- 基于 Compose 的编排
- Kubernetes YAML 生成就绪
## 🔹 第 2.6 节:故障排查与安全微服务部署 (实验 39–40)



| 实验 | 标题 | 重点领域 |
|-----|-------|------------|
| 39 | [常见容器问题排查](lab39-troubleshooting-common-container-issues) | 资源限制与 SELinux 调试 |
| 40 | [安全的 Flask 微服务](lab40-secure-flask-microservice) | 生产级安全部署 |
### 🛠 展示的技能
- CPU 与内存诊断
- `podman stats` 监控
- SELinux AVC 拒绝分析
- `ausearch` 调查
- 使用 `nsenter` 进行 namespace 调试
- 基于 secret 的数据库凭证处理
- 镜像扫描与签名
- 生产验证工作流
# 🛠 技术栈
本作品集在 40 个动手实验中利用了生产级的容器、编排和安全工具。
点击展开
## 🐳 容器运行时与构建系统 - **Podman 4.9.3**(rootless 与 rootful) - Podman Compose - Docker 兼容工作流 - Containerfile / Dockerfile 编写 - 多阶段构建与层优化 - Registry 交互(Docker Hub、Red Hat UBI) - `podman build`、`podman tag`、`podman push`、`podman save/load` ## ☸ 编排与云原生部署 - Kubernetes - Pods - Services(ClusterIP、NodePort) - Ingress(NGINX Ingress Controller) - StatefulSets - PersistentVolumeClaims (PVC) - `kubectl` - `podman play kube` - 使用 `podman-compose` 进行多容器编排 ## 🗄 数据库与有状态工作负载 - MySQL 8 - PostgreSQL 13 / 15 - Redis - 持久化 volumes 与 bind mounts - 备份与恢复工作流(mysqldump、volume 恢复) ## 🔐 安全与加固 - SELinux(卷标记、AVC 故障排查) - 强制非 root 容器 - 最小权限容器设计 - Podman 镜像扫描 - 镜像签名与信任策略 - Secrets 管理(`podman secrets`、`.env`、`/run/secrets`) ## 🧰 调试、可观测性与检查 - `podman logs`、`inspect`、`stats`、`exec`、`events` - `nsenter`(namespace 调试) - `ausearch`(SELinux 诊断) - `journalctl` - `jq`(JSON 解析) - `curl`(服务验证) - `dive`(适用的镜像层分析) ## 💻 语言与应用运行时 - Bash 脚本 - Python(Flask 微服务) - Node.js(调试容器) - SQL(PostgreSQL / MySQL) ## 🌐 网络与暴露 - 端口绑定与发布 - 自定义网桥网络 - 多容器服务发现 - Kubernetes Service 暴露 - 基于 Ingress 的路由标签:Docker Compose, Linux运维, MITM代理, Podman, 子域名突变, 容器技术, 应用安全, 请求拦截, 逆向工具