如何将gitlab 跑步者设置为缓存Docker层



我们有自己的gitlab repo。我们有自己的跑步者。

如何设置跑步者和gitlab,以便能够缓存docker层。

以下一个.gitlab-ci.yml文件的示例:

before_script:
  - docker version
test:
  stage: test
  script:
    - docker-compose -f docker-compose.yml build my_job
    - docker-compose -f docker-compose.yml down
    - docker-compose -f docker-compose.yml up --remove-orphans --force-recreate --abort-on-container-exit

我一直在尝试阅读如何执行此操作,但是所有文档都令人困惑。

https://gitlab.com/gitlab-org/gitlab-ce/issues/17861状态:

使用shell executor

这是最好的执行者 缓存Docker层。基本上不需要任何更改,其他 然后将Gitlab-Runner添加到Docker Group。

鉴于git提取它提供了缓存码头的最佳可能性 层。

一个人如何设置?我只是找不到文档中的任何地方。

我发现,使用docker-indocker executor实际上确实支持了缓存的层(即使文档否则也是如此(。
只需先拉图像,然后在cache-from标志中指定。
|| true允许在拉图像时失败,这对于您首次构建图像(例如在新分支中(

时很重要
  script:
    - docker pull $OLD_DOCKERIMAGE || true
    - docker build -t $NEW_DOCKERIMAGE --cache-from $OLD_DOCKERIMAGE .
    - docker push $NEW_DOCKERIMAGE

其他要求:此功能需要启用DOCKER_BUILDKIT,并且必须使用构建参数进行构建:--build-arg BUILDKIT_INLINE_CACHE=1

由于您是构建docker images作为CI作业的一部分,因此您很可能已经使用了Shell Executor。只有3种方法可以配置您的GitLab跑步者以支持构建Docker Image作为CI作业的一部分:https://docs.gitlab.com/ee/ci/ci/docker/using_docker_build.html

本文档还解释了如何配置外壳执行程序以及所有3种配置方式之间的权衡是什么。

基本上,唯一不允许使用docker层的跑步者配置是使用docker-in-in-in-docker executor。

使用shell和docker套接字绑定始终在托管gitlab跑步者的VM上本地缓存层,因此无需进一步的配置即可启用缓存。

最新更新