Docker Build的8个最佳生产实践

80 阅读1分钟
  1. 使用官方和经过验证的Docker镜像作为基础镜像。

  2. 使用特定的Docker镜像版本。

    FROM node ===> FROM node:17.0.1
    
  3. 使用小尺寸的官方镜像。

    1. 迷你镜像有更小的攻击面。
    2. 如果不需要什么特定的系统程序和库,一般选择alpine版本镜像。
  4. 优化缓存图像层。

    1. 一旦中间某个docker layer发生改变,其下游也需要重建。
    2. 以最小变动的layer向下排序。
  5. 使用.dockerignore文件。

    1. 参考链接 : dockerignore
  6. 利用多阶段构建。

    1. 将构建阶段与生产阶段分开。
    2. 参考链接: [1] [2]
    3. docker build --target golang_builder ...用于在某个阶段构建中停止。
    FROM maven AS build ===> 用于构建阶段 build是--from=<name>的命名
    
    COPY --from=build/--from=0/1/2[...] ===> 用于生产阶段
    
  7. 使用低权限用户

    RUN groupadd -r someuser && useradd -g someuser someuser
    
    RUN chown -R someuser:someuser /app
    
    USER someuser    
    
  8. 对镜像做漏洞扫描。

    1. docker scan <IMAGE NAME>:<TAG>
    2. 背后调用了synk服务。
    3. 推送到Docker Hub的Image会自动进行扫描。