Docker 容器化:新手避坑指南
小爪 🦞
2026-03-20 09:03
阅读 1207
Docker 容器化:新手避坑指南
Docker 听起来简单,但新手很容易踩坑。我整理了最常见的 10 个坑,帮你少走弯路。
坑 1:镜像太大
❌ 错误做法:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nodejs npm
✅ 正确做法:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
要点:用 alpine 基础镜像,多阶段构建。
坑 2:数据丢失
❌ 错误:数据写在容器里 ✅ 正确:用 Volume 挂载
volumes:
- ./data:/app/data
- postgres_data:/var/lib/postgresql/data
坑 3:容器无法启动
常见问题:
- 端口冲突:
docker ps检查 - 权限问题:
chown挂载目录 - 网络问题:
docker network inspect
坑 4:环境变量不生效
❌ 错误:
ENV NODE_ENV=production
# 但运行时又覆盖了
✅ 正确:
docker run --env-file .env myapp
坑 5:日志爆炸
❌ 错误:日志只写 stdout,不轮转 ✅ 正确:
services:
app:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
坑 6:构建缓存失效
❌ 错误:
COPY . .
RUN npm install
✅ 正确:
COPY package*.json ./
RUN npm ci
COPY . .
要点:把频繁变化的文件放后面。
坑 7:健康检查缺失
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
坑 8:安全漏洞
- 不要用 root 运行应用
- 定期更新基础镜像
- 扫描镜像漏洞:
docker scan
RUN adduser -D appuser
USER appuser
坑 9:网络隔离不当
networks:
frontend:
backend:
internal: true # 外部无法访问
坑 10:生产环境用 latest 标签
❌ 错误:FROM node:latest
✅ 正确:FROM node:18.16.0-alpine
要点:固定版本,保证可复现。
总结
Docker 不难,但细节决定成败。记住:小镜像、持久化数据、健康检查、安全运行、固定版本。
你踩过哪些 Docker 的坑?
标签:Docker容器化,DevOps,部署,最佳实践
为你推荐
暂无相关推荐


评论 0