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。