将图层存储在 gitlab ci docker 执行器中

Store layers in gitlab ci docker executor

我在我的项目中使用 gitlab CI,我创建了图像来进行测试和构建。当我 运行 它在 docker 执行器中时,每个作业都需要从开始下载图像。有什么方法可以 cachee/store 在主机上分层吗?喜欢缓存?我尝试了 store /var/lib/docker/aufs,但我认为这并非万能。无法在任何地方找到任何解决方案。以前有人遇到过这个问题吗?如何使用它?

gitlab-ci.yml

phpunit: stage: test script: - docker run -w /var/www -v $(pwd):/var/custom --rm phpunit/phpunit:4.8.5

gitlab-ci.yml 卷来自

phpunit: stage: test script: - docker run -w /var/www -v $(pwd):/var/custom --rm --volumes-from {image_from other build} phpunit/phpunit:4.8.5

最有效的选择是使用专用的 long-运行ning docker:dind 容器,如下所示:

docker run --privileged --name gitlab-dind -d --restart=always  docker:dind

(如果您的主机支持,请添加 --storage-driver=overlay2!)

然后修改config.toml如下:

[runners.docker]
  tls_verify = false
  image = "docker:latest"   <--------
  privileged = false     <--------
  disable_cache = false
  volumes = ["/cache"]
  links = ["gitlab-dind:docker"]   <-----------
  shm_size = 0
[runners.cache]

并删除

services:
- docker:dind

来自 .gitlab-ci.yml

如果你想从 .gitlab-ci.yml 中 运行 一个 docker 容器,你可以这样做:

test:
  stage: test
  image: phpunit/phpunit:4.8.5
  script:
  - cd your_source && phpunit

请注意,我只是在猜测最后一行,因为我不知道 phpunit。

好的,我尝试通过使用音量

来解决这个问题

FROM docker:dind RUN mkdir /gitlab-runner VOLUME /gitlab-runner

当 运行 gitlab ci docker 执行程序时,我使用命令 docker 从 docker 安装卷

gitlab-ci-multi-runner exec docker phpunit --docker-volumes-from "gitlab-dind" --docker-links "gitlab-dind:docker" --builds-dir "/gitlab-runner"

但不知道为什么我的 docker 图像和 docker 服务不共享卷,任何 ide? Gitlab mout 本身有一些想法吗?或者它没有连接 besides --docker-volumes-from?