构建器可以重用以前生成的缓存,其中--cache-from标志指向注册表中的映像。
若要将图像用作缓存源,需要在创建时将缓存元数据写入图像中。这可以通过在构建映像时设置--build arg BUILDKIT_INLINE_ACHE=1来实现。
但是,我注意到我仍然可以将docker build --cache-from
与不使用内联缓存构建的图像一起使用。在这种情况下,docker在没有任何警告或错误消息的情况下构建新的映像。因此,我想知道使用内联缓存和不使用内联缓存构建的图像之间的真正区别是什么?我如何知道源映像是否使用内联缓存构建?
缓存用于避免重复COPY、RUN等指令。如果您已经为图像设置了缓存,则没有差异,只有先为图像清理缓存时,您才会注意到。
如果你正在构建一个大的图像,你希望它不要花太长时间,我建议你构建一个docker图像库。
例如:具有非常大要求的图像库dockerfile
.txt
FROM python:3.9.5-buster
RUN apt-get update && apt-get install -y --no-install-recommends
libxmlsec1-dev pkg-config && apt-get install -y tzdata
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
EXPOSE 8000
图像库docker-compose.yaml
version: '3.5'
services:
python-base:
networks:
- services-net
image: myrepo/python-base:0.0.1
build:
context: .
dockerfile: Dockerfile
然后你这样使用它:
混凝土码头文件
FROM myrepo/python-base:0.0.1
...
最后,您可以将基本图像推送到dockerhub,并在任何地方使用它