=====欢迎来到编程星辰海的博客讲解======
看完可以给一个免费的三连吗,谢谢大佬!
目录
一、Docker 核心知识体系
1.1 容器革命:改变开发方式的技术
容器技术通过操作系统级别的虚拟化,将应用程序及其依赖打包成标准化单元。容器与虚拟机对比:
- 轻量级(共享主机内核)
- 秒级启动速度
- 资源占用仅为MB级
- 镜像分层机制(copy-on-write)
1.2 Docker 三剑客
组件 | 作用描述 |
---|---|
Dockerfile | 构建镜像的蓝图文件,包含逐层构建指令 |
Image | 只读的模板文件,包含运行环境和应用程序 |
Container | 镜像的运行实例,具有可写层和独立命名空间 |
1.3 Docker 生命周期管理
BASH
# 完整工作流示例 docker build -t myapp . # 构建镜像 docker run -d -p 80:80 myapp # 启动容器 docker exec -it <cid> bash # 进入容器 docker logs <cid> # 查看日志 docker stop <cid> # 停止容器 docker system prune # 清理资源
1.4 关键命令详解
BASH
# 镜像管理 docker image ls # 列出所有镜像 docker history <image> # 查看镜像构建历史 docker save -o backup.tar myapp # 镜像导出 # 容器网络 docker network create mynet # 创建自定义网络 docker stats # 实时资源监控 # 高级功能 docker volume create appdata # 持久化数据卷 docker-compose up --scale web=3 # 服务扩展
二、前端容器化实战案例(含完整代码)
2.1 项目结构
TEXT
/my-react-app ├── public/ ├── src/ ├── package.json ├── Dockerfile # 构建定义文件 └── docker-compose.yml # 服务编排文件
2.2 四阶段构建 Dockerfile
DOCKERFILE
# 阶段1:使用Node镜像构建应用 FROM node:18-alpine as builder WORKDIR /app COPY package*.json ./ RUN npm ci --silent # 精确安装依赖 COPY . . RUN npm run build # 生成生产环境构建文件 # 阶段2:使用Nginx服务静态文件 FROM nginx:1.25-alpine # 复制构建产物到Nginx默认目录 COPY --from=builder /app/build /usr/share/nginx/html # 使用自定义nginx配置(需要提前准备) COPY nginx.conf /etc/nginx/conf.d/default.conf # 暴露端口并启动服务 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] # 前台运行模式
2.3 配套Nginx配置(nginx.conf)
NGINX
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html; # 支持前端路由 } gzip on; # 开启压缩 gzip_types text/plain text/css application/json application/javascript; }
2.4 编排文件(docker-compose.yml)
YAML
version: '3.8' services: webapp: build: . ports: - "8080:80" restart: unless-stopped # 自动重启策略 environment: - NODE_ENV=production networks: - frontend-net networks: frontend-net: driver: bridge
2.5 操作流程
BASH
# 构建并启动服务 docker-compose up --build -d # 查看运行状态 docker-compose ps # 访问应用 curl http://localhost:8080
三、大师级最佳实践
3.1 镜像优化策略
- 多阶段构建:分离构建环境与运行环境
- 使用Alpine基础镜像:缩减镜像体积(Node镜像从1GB→50MB)
- 层缓存优化:合理排序Dockerfile指令
- .dockerignore文件:排除无关文件
DOCKERFILE
# 示例优化后的Dockerfile ... # 添加.dockerignore文件 node_modules .git *.log
3.2 安全加固方案
- 使用非root用户运行进程
- 定期更新基础镜像
- 扫描镜像漏洞(docker scan)
- 配置只读文件系统
DOCKERFILE
# 安全增强配置 RUN addgroup -S appgroup && adduser -S appuser -G appgroup USER appuser
四、知识图谱与扩展
4.1 学习路线图
4.2 扩展阅读
- 官方文档:Docker Documentation
- 安全指南:CIS Docker Benchmark
- 最佳实践:Docker Production Checklist
- 性能优化:《深入浅出Docker》
- 前沿技术:containerd与CRI规范解析
五、疑难解答宝典
Q1: 容器端口无法访问?
- 检查防火墙设置
- 验证端口映射是否正确(docker ps查看PORTS列)
- 确认应用监听0.0.0.0而非localhost
Q2: 构建时npm install超慢?
- 使用国内镜像源:
DOCKERFILE
RUN npm config set registry https://registry.npmmirror.com
Q3: 容器内时间不正确?
DOCKERFILE
# 挂载主机时区 -v /etc/localtime:/etc/localtime:ro
通过本指南的系统学习,大家已掌握现代Web应用的容器化部署精髓。后续可继续探索Docker Swarm、Kubernetes等编排技术,构建完整的云原生技术栈。