在gitlab ci docker executor中存储图层

时间:2017-08-03 08:18:00

标签: docker gitlab-ci gitlab-ci-runner

我正在我的项目中使用gitlab CI,我创建了图像来进行测试和构建。当我在docker executor中运行它时,每个作业都需要从beggining下载图像。有没有办法在主机上缓存/存储这些图层?喜欢缓存?我尝试了存储/ var / lib / docker / aufs,但我不是每个人都认为。无法在任何地方找到任何解决方案。以前有人有这个问题吗?如何使用它?

gitlab-ci.yml

part index

gitlab-ci.yml,卷来自

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

2 个答案:

答案 0 :(得分:0)

最有效的选择是使用专用的长时间运行的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。

答案 1 :(得分:0)

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

来解决这个问题

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

当运行gitlab ci docker executor时,我使用命令

从docker挂载卷

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

但是不知道为什么我的docker图像和docker服务没有共享音量,任何想法? Gitlab mout那里有一些想法吗?或者它除了--docker-volumes-from之外没有连接?