缓存
- 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
标签:缓存,force,centos,--,maven,Buildkit,docker,DockerFile
From: https://www.cnblogs.com/guanchaoguo/p/17610697.html