我正在我的项目中使用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
答案 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之外没有连接?