当前位置: 首页 > 面试题库 >

带有Gitlab的Docker-in-Docker共享运行器,用于构建Docker映像并将其推送到注册表

元彦君
2023-03-14
问题内容

在尝试设置可以构建docker映像的Gitlab CI时,发现最初仅对单独的跑步者启用了DinD,而Blog
Post
建议尽快对共享跑步者启用DinD ,

运行DinD需要在运行程序中启用特权模式,该模式在注册运行程序时设置为标志,但找不到共享运行程序的等效机制


问题答案:

共享的运行器现在可以构建Docker映像。这是您可以使用的工作:

stages:
  - build
  - test
  - deploy

# ...
# other jobs here
# ...

docker:image:
  stage: deploy
  image: docker:1.11
  services:
    - docker:dind
  script:
    - docker vershtml" target="_blank">ion
    - 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提供的Container Registry。仅当构建提交带有版本号标记时,它才推送图像。

  • 预定义变量的文档。

  • 请注意,您将需要缓存或生成未在存储库中提交的服务的任何依赖项的临时工件。这应该在其他工作中完成。例如,node_modules通常不包含在存储库中,必须从build/ test阶段进行缓存。



 类似资料:
  • 我无法将docker映像推送到低于错误的工件注册表 登录和拉取工作正常 詹金斯档案: Dockerfile: 我不确定这是怎么回事。我可以在jenkins从属节点上手动推送图像。但使用詹金斯会产生错误 我构建工作的日志 这是我的构建日志中的内容。

  • 我无法将docker映像推送到heroku注册表。 根据docker的说法,我已成功登录: 在那之后,我运行了,我得到了一些令人困惑的错误,说我试图推送到一个不安全的repo,而de-output中的url看起来是安全的(以https开头)。我做错了什么? 我正在使用以下jib配置: jib的Maven输出:build wiht-X:

  • 问题内容: 我已经创建了自己的docker文件(该文件运行一个显示“ helloworld”的shell脚本)。图像是“ hellodocker”,标签是“ mytag”,我现在拥有: 如何将Docker映像推送到dockerhub?我用。这给出了“无此类ID”错误。我想念什么?提前致谢。 问题答案: 您要么在构建时就将其标记为标签,例如 或创建绑定到同一图像的新标签,即

  • 问题内容: 我正在尝试将Docker映像推送到Docker Hub上的私人仓库中。但是,我确实看到Docker Hub上有一个“信息”部分,我想使用有关映像的有用信息进行更新。我想知道是否可以推送README.md文件,并且Docker Hub可以解析此文件并以此更新“信息”部分。我不确定是否应该将README.md嵌入到我的映像中以使其工作? 问题答案: Docker Hub将尝试解析您是否正在

  • 目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个

  • 我正在尝试设置一个运行UbuntuLinux18.04作为docker主机的构建服务器。 主机有三个docker容器在运行——docker注册表——Gitlab服务器——Gitlab Runner(用于构建应用程序) 我希望Gitlab Runner容器使用nginx和编译的Angular代码构建docker映像,并将其推送到docker注册表。 我已经成功地设置了所有三个运行的容器,Gitlab