跳到主要内容

容器与编排基础

问题

Docker 和 Kubernetes 的核心概念是什么?前端需要了解哪些?

答案

Docker 核心概念

概念说明
Image(镜像)只读模板,包含运行环境和代码
Container(容器)镜像的运行实例
Dockerfile构建镜像的脚本
Docker Compose编排多个容器的工具

前端项目 Dockerfile

Dockerfile
# 多阶段构建
FROM node:20-alpine AS builder
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN corepack enable && pnpm install --frozen-lockfile
COPY . .
RUN pnpm build

FROM nginx:alpine AS runner
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

K8s 核心概念

概念说明类比
Pod最小部署单元(一个或多个容器)一个进程
ServicePod 的网络抽象(负载均衡)Nginx upstream
Deployment管理 Pod 的副本集PM2 cluster
Ingress外部流量入口Nginx server
ConfigMap/Secret配置和密钥管理.env 文件

常用 Docker 命令

# 构建镜像
docker build -t my-app:latest .

# 运行容器
docker run -d -p 80:80 --name my-app my-app:latest

# 查看容器
docker ps
docker logs my-app

# Docker Compose
docker compose up -d # 启动所有服务
docker compose down # 停止所有服务
docker compose logs -f # 查看日志

常见面试问题

Q1: Docker 和虚拟机的区别?

答案

维度Docker虚拟机
隔离级别进程级(共享内核)系统级(独立内核)
启动速度秒级分钟级
资源开销极小大(需要完整 OS)
镜像大小MB 级GB 级

Q2: 多阶段构建有什么好处?

答案

减小最终镜像体积。构建阶段需要 Node.js、npm 等工具(上百 MB),但运行阶段只需要 Nginx + 静态文件(几十 MB)。

Q3: 前端工程师需要了解 K8s 吗?

答案

基本概念需要了解,因为:

  1. CI/CD 部署通常基于 K8s
  2. 需要理解 Pod、Service 概念来排查问题
  3. 环境变量注入依赖 ConfigMap
  4. 日志查看需要 kubectl 基本操作

Q4: 如何实现容器的健康检查?

答案

# K8s 健康检查
livenessProbe: # 存活检查,失败则重启
httpGet:
path: /health
port: 3000
periodSeconds: 10

readinessProbe: # 就绪检查,失败则不接收流量
httpGet:
path: /ready
port: 3000
initialDelaySeconds: 5

相关链接