DockerFile 构建缓存 Buildkit

缓存

  • Dockerfile 构建缓存功能从 Docker 17.05 版本开始引入
  • 可以加速构建 直接服用缓存 构建我们看到 from cache 就是来自缓存
  • 缓存是一个命令为单位 如果想服用缓存需要考虑

查看缓存大小

清除缓存

docker volume prune  --all --force
docker image prune  --all --force
docker network prune  --all --force
docker builder prune  --all --force

truncate -s 0 <logfile>
docker system prune --volumes --force  #  删除停止的容器、未使用的网络、悬空镜像和挂载卷

Docker Buildkit
  • Docker v18.09 版本起已经集成了该组件
  • 魔法注释
  • 开启 特性
  • 临时生效
# 增加DOCKER_BUILDKIT=1后的命令
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t test_name .
  • 永久生效 /etc/docker/daemon.json
{
  "features": {
    "buildkit" : true
  }
}

临时访问 secrets 、 ssh-agent 、 socket

# syntax=docker/dockerfile:experimental
FROM centos AS centos
FROM alpine
RUN --mount=type=bind,from=centos,source=/,target=/centos ls /centos > /root/centos.txt

maven、npm 等有构建缓存,且希望缓存复用的场景 过程中读写的文件进行共享

# syntax=harbor.goodcol.com/dockerhub_proxy/docker/dockerfile:1.4
FROM harbor.goodcol.com/dockerhub_proxy/library/maven:3.8.6-openjdk-8-slim
WORKDIR /workspace/

RUN --mount=type=cache,target=/maven-repo,id=maven-repo echo shanhy > /maven-repo2/shanhy1.log && ls /maven-repo2/* > filelist.log

posted @ 2023-08-07 10:06  vx_guanchaoguo0  阅读(160)  评论(0编辑  收藏  举报