Docker-in-Docker与Gitlab共享运行器,用于构buildDocker映像并将其推送到registry
一直试图build立可以build立一个docker图像的Gitlab CI,并且发现DinD最初只为单独的跑步者启用,而Blog Post则表示将很快为共享的跑步者启用,
运行DinD需要在跑步者中启用特权模式,在注册跑步者时将其设置为标志,但是找不到共享跑步者的等同机制
共享的赛跑者现在能够构buildDocker镜像。 这是您可以使用的工作:
stages: - build - test - deploy # ... # other jobs here # ... docker:image: stage: deploy image: docker:1.11 services: - docker:dind script: - docker version - docker build -t $CI_REGISTRY_IMAGE:latest . # push only for tags - "[[ -z $CI_BUILD_TAG ]] && exit 0" - docker tag $CI_REGISTRY_IMAGE:latest $CI_REGISTRY_IMAGE:$CI_BUILD_TAG - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push $CI_REGISTRY_IMAGE:$CI_BUILD_TAG
这份工作假定你正在使用Gitlab提供的容器registry。 只有当构build提交用一个版本号标记时,它才会推送图像。
-
预定义variables的文档。
-
请注意,您将需要caching或生成临时工件,这些临时工件不会在存储库中提交。 这应该是在其他工作。 例如,
node_modules
通常不包含在存储库中,必须从build
/test
阶段caching。