使用ramdisk更快地构建Dockerfile
我们运行一个构建过程,从一个大型代码库编译多个工件 在一个体面的带有SSD的spec i7上,这需要约20分钟,但是当我转向使用tmpfs时,时间会下降到约3分钟 我们正在使用docker compose打包构建过程,以确保所有开发人员获得相同的构建环境,但也希望他们能够在没有更改的情况下使用docker缓存中的工件运行项目。感知到的构建时间是一个问题,但我们也担心磁盘驱动器的磨损,因为每个构建过程的写容量都大于1Gb 是否有办法在Dockerfile“RUN”命令中装载tmpfs(而不是在运行容器阶段) 我已尝试使用mount(如下),但获得的权限被拒绝:使用ramdisk更快地构建Dockerfile,docker,docker-compose,dockerfile,tmpfs,Docker,Docker Compose,Dockerfile,Tmpfs,我们运行一个构建过程,从一个大型代码库编译多个工件 在一个体面的带有SSD的spec i7上,这需要约20分钟,但是当我转向使用tmpfs时,时间会下降到约3分钟 我们正在使用docker compose打包构建过程,以确保所有开发人员获得相同的构建环境,但也希望他们能够在没有更改的情况下使用docker缓存中的工件运行项目。感知到的构建时间是一个问题,但我们也担心磁盘驱动器的磨损,因为每个构建过程的写容量都大于1Gb 是否有办法在Dockerfile“RUN”命令中装载tmpfs(而不是在运行
RUN mkdir -p /core_src && mount -t tmpfs /dev/foo /core_src
实验性前端到buildkit允许 您的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
)