插件窝 干货文章 docker镜像制作步骤

docker镜像制作步骤

镜像 Docker 构建 容器 171    来源:    2025-04-26

Docker镜像制作步骤详解

基础镜像制作流程

  1. 准备工作

    • 安装Docker引擎
    • 准备应用程序代码和依赖文件
    • 确定基础镜像(如alpine、ubuntu等)
  2. 创建Dockerfile

    # 指定基础镜像
    FROM python:3.9-slim
    
    # 设置工作目录
    WORKDIR /app
    
    # 复制文件到容器
    COPY requirements.txt .
    COPY . .
    
    # 安装依赖
    RUN pip install --no-cache-dir -r requirements.txt
    
    # 暴露端口
    EXPOSE 8000
    
    # 定义启动命令
    CMD ["python", "app.py"]
    
  3. 构建镜像

    docker build -t my-app:1.0 .
    
  4. 验证镜像

    docker images
    docker run -p 8000:8000 my-app:1.0
    

进阶优化技巧

  1. 多阶段构建 (减少最终镜像大小)

    # 构建阶段
    FROM node:14 AS build
    WORKDIR /app
    COPY . .
    RUN npm install && npm run build
    
    # 生产阶段
    FROM nginx:alpine
    COPY --from=build /app/dist /usr/share/nginx/html
    EXPOSE 80
    
  2. 使用.dockerignore文件 (排除不必要的文件)

    node_modules
    .git
    *.log
    *.md
    
  3. 镜像标签管理

    docker tag my-app:1.0 my-registry.com/my-app:1.0
    docker push my-registry.com/my-app:1.0
    

最佳实践

  1. 安全性考虑

    • 避免使用root用户运行容器
    • 定期更新基础镜像
    • 扫描镜像中的漏洞
  2. 性能优化

    • 合并RUN指令减少镜像层
    • 合理安排COPY顺序利用缓存
    • 使用轻量级基础镜像
  3. 调试技巧

    # 进入运行中的容器
    docker exec -it <container-id> /bin/bash
    
    # 查看容器日志
    docker logs <container-id>
    
    # 检查镜像构建历史
    docker history <image-name>
    

常见问题解决

  1. 构建缓存问题

    • 使用--no-cache选项强制重新构建
    docker build --no-cache -t my-app:1.0 .
    
  2. 时区设置

    ENV TZ=Asia/Shanghai
    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
    
  3. 中文支持

    ENV LANG C.UTF-8
    

通过以上步骤和技巧,您可以高效地创建优化的Docker镜像,满足不同场景下的容器化需求。