首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gitlab ci找不到带有shell执行器的docker buildx命令

gitlab ci找不到带有shell执行器的docker buildx命令
EN

Stack Overflow用户
提问于 2020-08-05 20:21:11
回答 2查看 437关注 0票数 1

我在让gitlab-runner执行docker buildx命令时遇到了一些麻烦。我有一个gitlab-runner,它是这样配置的:

代码语言:javascript
复制
[[runners]]
  name = "Name"
  url = "https://gitlab.mypage.com/"
  token = "token"
  executor = "shell"
  shell = "powershell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

以及触发的流水线:

代码语言:javascript
复制
stages:
  - test
  - build

test_backend:
  stage: test
  script:
    - exit 0
  only:
    - merge_request
    - master

build:
  stage: build
  script:
    - docker login someregistry -u xxxx -p yyyy
    - docker buildx ls
  only:
    - merge_request
    - master
    - dev

我把代码弄乱了一点。

我遇到的问题是,docker login命令执行正确,而docker buildx命令执行不正确。我已经在机器上手动测试了这个命令,它是成功的。

有人能帮帮我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-06 15:44:59

我找到了解决我的问题的办法。要使用实验功能,您可以设置环境变量。

$env:DOCKER_CLI_EXPERIMENTAL=enabled

此命令可在ci管道中使用。

shell executor中的docker cli看起来与您可以在系统上使用的docker cli不同。非常令人困惑。

票数 0
EN

Stack Overflow用户

发布于 2020-08-06 01:32:18

在我使用docker runner的经验中,最有可能的情况是,docker runner没有启用实验功能,只是因为docker base有它……我在过去经历过这样的事情:跑步者中的码头并不是你接待跑步者的码头!

你必须为此添加DIND (Docker in Docker)服务,因为据我所知,只有这样,来自你主机的docker才能连接到runner中的docker。

我们是这样做的:

代码语言:javascript
复制
  # gitlab-runner
gitlab-runner:
container_name: vivavis.gitlab-runner
image: gitlab/gitlab-runner:latest
restart: always
volumes: 
  - gitlab-runner:/etc/gitlab-runner
  - /var/run/docker.sock:/var/run/docker.sock // <<<<<< THIS IS THE IMPORTANT LINE
networks:
  - swp-infra-code

这里有一点警告:

当激活它时,我们遇到了一个错误/没有很好地清理:因为GitLab运行器现在与基础docker连接,在运行CI / CD时创建的映像没有正确删除: GitLab没有实现该功能,它只是假设,当gitlab- Runner -container死时,里面的所有数据都会死掉。但是有了这个连接,这里的数据不会消亡,因为它不是在容器中创建的-它是在基础docker中创建的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63265110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档