容器化部署指南:Docker 与 Kubernetes 入门实践
2026-03-30 15:49 浏览: 次容器化技术正在改变应用部署方式。Docker 让应用打包和分发变得简单,Kubernetes 则提供了强大的容器编排能力。本文将介绍容器化部署的基础知识和实践指南。
一、容器化基础
1. 什么是容器
容器是一种轻量级的虚拟化技术,将应用及其依赖打包在一起,实现"一次构建,到处运行"。
2. 容器 vs 虚拟机
(1)启动速度
- 容器:秒级启动
- 虚拟机:分钟级启动
(2)资源占用
- 容器:MB 级,共享内核
- 虚拟机:GB 级,独立内核
(3)性能
- 容器:接近原生
- 虚拟机:有性能损耗
(4)隔离性
- 容器:进程级隔离
- 虚拟机:完全隔离
3. 容器优势
- 一致性:开发、测试、生产环境一致
- 快速部署:秒级启动
- 资源高效:更高密度
- 可移植性:跨平台运行
- 版本控制:镜像版本管理
二、Docker 基础
1. 核心概念
(1)镜像(Image)
- 只读模板
- 包含应用和依赖
- 分层存储
(2)容器(Container)
- 镜像的运行实例
- 可启动、停止、删除
- 数据可持久化
(3)仓库(Registry)
- 存储和分发镜像
- Docker Hub:公共仓库
- 私有仓库:企业自建
2. Docker 安装
# Ubuntu 安装
sudo apt-get update
sudo apt-get install docker.io
# 验证安装
docker --version
docker run hello-world
3. 常用命令
(1)镜像操作
docker pull nginx # 拉取镜像
docker images # 列出镜像
docker rmi nginx # 删除镜像
(2)容器操作
docker run -d nginx # 运行容器
docker ps # 列出容器
docker stop <container> # 停止容器
docker rm <container> # 删除容器
(3)日志和调试
docker logs <container> # 查看日志
docker exec -it <c> bash # 进入容器
docker inspect <container> # 查看详细信息
4. Dockerfile 编写
# 基础镜像
FROM ubuntu:20.04
# 设置环境变量
ENV APP_HOME=/app
WORKDIR $APP_HOME
# 安装依赖
RUN apt-get update && apt-get install -y python3
# 复制文件
COPY . .
# 安装应用
RUN pip3 install -r requirements.txt
# 暴露端口
EXPOSE 8080
# 启动命令
CMD ["python3", "app.py"]
5. 镜像构建和运行
# 构建镜像
docker build -t myapp:1.0 .
# 运行容器
docker run -d -p 8080:8080 myapp:1.0
三、Docker Compose
1. 什么是 Compose
Compose 是用于定义和运行多容器 Docker 应用的工具,使用 YAML 文件配置。
2. compose.yml 示例
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- app
app:
build: ./app
environment:
- DATABASE_URL=postgres://db:5432/mydb
depends_on:
- db
db:
image: postgres:13
environment:
- POSTGRES_PASSWORD=secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
3. 常用命令
docker-compose up -d # 启动服务
docker-compose down # 停止服务
docker-compose ps # 查看状态
docker-compose logs # 查看日志
四、Kubernetes 基础
1. 核心概念
(1)Pod
- 最小部署单元
- 包含一个或多个容器
- 共享网络和存储
(2)Deployment
- 管理 Pod 副本
- 支持滚动更新
- 自动恢复
(3)Service
- 服务发现
- 负载均衡
- 稳定访问入口
(4)ConfigMap/Secret
- 配置管理
- 敏感信息管理
- 与应用解耦
2. 集群架构
(1)控制平面
- API Server:集群入口
- Scheduler:调度 Pod
- Controller Manager:控制器
- etcd:数据存储
(2)工作节点
- Kubelet:节点代理
- Kube-proxy:网络代理
- 容器运行时:Docker/containerd
3. 基本操作
(1)kubectl 安装
# 下载 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
(2)部署应用
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=LoadBalancer
(3)查看状态
kubectl get pods
kubectl get services
kubectl get deployments
4. YAML 配置示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:1.0
ports:
- containerPort: 8080
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
五、容器化最佳实践
1. 镜像优化
(1)减小镜像大小
- 使用精简基础镜像(Alpine)
- 多阶段构建
- 清理缓存
(2)安全加固
- 使用非 root 用户
- 扫描漏洞
- 定期更新
2. 资源管理
- 设置资源请求和限制
- 避免资源争抢
- 监控资源使用
3. 日志管理
- 输出到标准输出
- 使用日志收集(ELK)
- 日志轮转
4. 健康检查
- 配置 liveness probe
- 配置 readiness probe
- 快速故障检测
5. 配置管理
- 使用 ConfigMap
- 敏感信息用 Secret
- 环境分离配置
六、容器编排对比
| 特性 | Kubernetes | Docker Swarm | Nomad |
|------|-----------|--------------|-------|
| 学习曲线 | 陡 | 平缓 | 中等 |
| 功能 | 最完善 | 基础 | 中等 |
| 生态 | 最丰富 | 一般 | 中等 |
| 适用 | 大型集群 | 小型集群 | 混合部署 |
结语
容器化是云原生时代的基础技能。Docker 简化了应用打包,Kubernetes 提供了强大的编排能力。掌握容器化技术,能够提升部署效率,降低运维成本。天下数据提供容器化咨询服务,可帮助企业实现容器化转型。技术咨询:400-638-8808。
【免责声明】:部分内容、图片来源于互联网,如有侵权请联系删除,QQ:228866015

