Docker 从入门到精通:容器化部署完全指南

容器2026-06-30
# Docker 从入门到精通 ## 核心概念 - **镜像 (Image)**:只读模板,包含运行环境和代码 - **容器 (Container)**:镜像的运行实例,隔离的进程空间 - **仓库 (Registry)**:镜像存储和分发中心 - **卷 (Volume)**:持久化数据存储 ## Dockerfile 最佳实践 ``` FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 USER node CMD ["node", "server.js"] ``` 关键原则: 1. 使用具体版本标签,避免 `latest` 2. 合并 RUN 指令减少层数 3. 使用 `.dockerignore` 排除无关文件 4. 非 root 用户运行 5. 健康检查 ## Docker Compose ``` services: app: build: . ports: ["3000:3000"] depends_on: db: condition: service_healthy restart: unless-stopped db: image: mysql:8.0 volumes: ["db_data:/var/lib/mysql"] healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] ``` ## 生产环境 Checklist - [ ] 日志收集(json-file + 轮转限制) - [ ] 资源限制(CPU / Memory) - [ ] 健康检查 - [ ] 优雅关闭(SIGTERM 处理) - [ ] 镜像扫描(Trivy / Snyk) - [ ] 只读根文件系统(可选) > 容器化不是目标,可维护的交付流程才是。