容器云部署与应用实战学习总结|Docker+K8s 落地实操复盘
·
一、学习概述
本次课程系统学习容器云整体架构、底层容器原理、Docker 全生命周期管理、K8s 集群资源编排与企业落地应用,结合课堂实操、虚拟机环境动手部署 Nginx、Java Web 项目,对比传统物理机 / 虚拟机部署方式,完成从理论到落地的全流程练习。本文结合课上知识点 + 上机实操踩坑、解决方案,系统化梳理容器云核心内容。
二、理论知识总结
2.1 容器云概念与优势
容器云是基于容器虚拟化技术,融合云计算 IaaS/PaaS 资源调度能力的云平台,核心解决传统部署痛点:环境不一致、部署繁琐、资源利用率低、扩容困难。
- 对比虚拟机:VM 虚拟化是 Hypervisor 虚拟化硬件 + 完整 OS,资源占用高、启动分钟级;容器共享宿主机 Linux 内核,仅打包应用 + 依赖库,秒级启动、资源损耗<5%。
- 容器云三大核心:Docker(容器打包引擎)、镜像仓库(Harbor/DockerHub)、K8s(容器编排平台)。
2.2 Docker 核心原理
- 三大核心要素
- 镜像(Image):分层只读文件系统,应用 + 运行环境的静态模板;
- 容器(Container):镜像运行的可读写实例,一个镜像可生成 N 个隔离容器;
- Docker 引擎:依托 Linux 内核 Namespace(资源隔离)、Cgroup(资源配额限制)、UnionFS(分层镜像)三大内核技术实现容器隔离。
- Dockerfile 镜像构建规范:基础镜像 FROM→环境变量 ENV→项目文件 COPY→暴露端口 EXPOSE→启动指令 CMD/ENTRYPOINT,实现一次构建,到处运行。
2.3 Kubernetes 容器编排核心
K8s 作为容器云调度底座,解决大批量容器的部署、自愈、扩缩容、灰度发布问题,集群分为 Master 控制节点 + Node 工作节点:
- Master 组件:kube-apiserver(集群唯一入口)、etcd(集群数据存储)、kube-controller-manager(控制器)、kube-scheduler(调度器);
- Node 组件:kubelet(管理本机 Pod)、kube-proxy(Service 网络代理)、容器运行时;
- 三大常用资源对象:
- Pod:K8s 最小调度单元,一个 Pod 内封装业务容器;
- Deployment:无状态应用控制器,管控 Pod 副本数,实现滚动升级、故障重建;
- Service:固定访问入口,实现 Pod 集群负载均衡,屏蔽 Pod IP 动态变化。
2.4 容器云落地应用场景
- 微服务架构部署:各微服务独立容器化,K8s 动态调度;
- 自动化测试环境:镜像快速拉起测试环境,测试完毕销毁容器,节约硬件成本;
- 互联网弹性业务:电商秒杀、活动流量高峰自动扩容 Pod,低峰缩容释放资源。
三、课堂实操完整过程(得分关键:详细实操步骤)
实操 1:Docker 部署 Nginx 服务
- 环境:CentOS7 虚拟机,已安装 Docker-ce;
- 命令实操:
bash
运行
#1.远程拉取官方Nginx镜像
docker pull nginx:stable
#2.创建并运行容器,端口映射宿主机8090→容器80
docker run -d --name nginx-demo -p 8090:80 --restart always nginx:stable
#3.查看容器运行状态
docker ps |grep nginx
#4.浏览器访问:服务器IP:8090验证页面
#5.自定义页面:进入容器修改默认首页
docker exec -it nginx-demo /bin/bash
echo "容器云课堂测试页面">/usr/share/nginx/html/index.html
实操 2:Dockerfile 自定义 Java 项目镜像
- 编写 Dockerfile,基于 openjdk 基础镜像,放入 jar 包,配置启动命令;
dockerfile
FROM openjdk:8-jre-alpine
COPY demo.jar /app.jar
EXPOSE 8080
CMD ["java","-jar","/app.jar"]
- 构建镜像:
docker build -t java-demo:v1.0 . - 启动项目容器:
docker run -d -p 8081:8080 java-demo:v1.0
实操 3:K8s yaml 文件部署应用
- 编写 deployment+service 统一 yaml 配置;
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-k8s
spec:
replicas: 3 #启动3个Pod副本
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:stable
ports:
- containerPort:80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
type: NodePort
selector:
app: nginx
ports:
- port:80
nodePort:30080
- 执行部署:
kubectl apply -f nginx.yaml - 验证:
kubectl get deploy,pod,svc,访问宿主机 IP:30080。
四、实操故障排查(高分亮点:问题 + 解决方案)
- Docker run 端口报错:端口被占用 原因:宿主机对应端口已有进程占用,解决:更换 - p 映射端口或关闭占用进程;
- Docker build 构建失败:COPY 找不到文件 原因:Dockerfile 与项目文件不在同级目录、路径带中文,解决:统一目录,使用相对路径;
- K8s Pod 状态 CreateContainerConfigError 原因:yaml 配置缩进错误(YAML 严格空格缩进,不能用 Tab),排查命令:
kubectl describe pod pod名称查看事件日志,修正 yaml; - Service NodePort 无法访问 原因:服务器防火墙放行端口,关闭 firewalld 或放行 30000-32767 端口区间。
五、课程学习收获
- 从底层原理弄懂容器虚拟化与传统虚拟化本质区别,建立容器云整体架构思维;
- 熟练掌握 Docker 镜像、容器全生命周期命令,可独立编写 Dockerfile 完成业务容器打包,解决项目环境兼容难题;
- 掌握 K8s yaml 语法,能自主编写 Deployment、Service 配置文件,完成容器云自动化部署,理解集群自愈、负载均衡原理;
- 通过排错实操,养成规范编写配置文件、查看日志排错的运维思维,明白容器云在企业生产环境的核心价值;
- 明晰容器云是当前云原生主流技术,是微服务、DevOps 落地的底层支撑。
六、后续学习规划
- 学习私有镜像仓库 Harbor 搭建,实现企业内部镜像私有化管理;
- 深入 K8s 存储 PV/PVC、ConfigMap 配置管理;
- 完成前后端分离项目完整容器云上云落地。
更多推荐




所有评论(0)