【问题标题】:Faster Dockerfile build using ramdisk使用 ramdisk 更快地构建 Dockerfile
【发布时间】:2020-11-23 12:07:01
【问题描述】:

我们运行一个从大型代码库编译多个工件的构建过程。

在配备 SSD 的体面规格 i7 上,这大约需要 20 分钟,但是当我转向使用 tmpfs 时,时间会减少到大约 3 分钟。

我们正在使用 docker-compose 打包构建过程,以确保所有开发人员都获得相同的构建环境,但也希望他们能够在没有更改的情况下使用 Docker 缓存中的工件运行项目。感知的构建时间是一个问题,但我们也担心会磨损磁盘驱动器,因为该进程在每次构建时写入 > 1Gb。

有没有办法在 Dockerfile 'RUN' 命令中挂载 tmpfs(不是运行容器阶段)?

我曾尝试使用 mount(如下),但权限被拒绝:

RUN mkdir -p /core_src && mount -t tmpfs /dev/foo /core_src

【问题讨论】:

    标签: docker docker-compose dockerfile tmpfs


    【解决方案1】:

    buildkit 的实验性前端允许tmpfs mounts during a run step

    你的 Dockerfile 看起来像:

    # syntax=docker/dockerfile:experimental
    FROM your_base_image
    RUN --mount=type=tmpfs,target=/core_src compile_command_here
    

    然后要使用 compose 启用 buildkit,可以设置两个环境变量:

    export DOCKER_BUILDKIT=1 # or configure in daemon.json
    export COMPOSE_DOCKER_CLI_BUILD=1
    

    在 /etc/docker/daemon.json 中启用 buildkit 如下所示:

    { "features": { "buildkit": true } }
    

    然后需要重新加载 dockerd 才能使用它 (systemctl reload docker)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多