【问题标题】:GitLab-CI: Cannot link to a non running containerGitLab-CI:无法链接到未运行的容器
【发布时间】:2017-10-30 15:06:25
【问题描述】:

我已尝试使用 gitlab-ci 进行设置。我有一个简单的 gitlab-ci.yml 文件

build_ubuntu:
  image: ubuntu:14.04
  services:
    - rikorose/gcc-cmake:gcc-5
  stage: build
  script:
    - apt-get update
    - apt-get install -y python3 build-essential curl
    - cmake --version
  tags:
    - linux

我想安装一个带有 gcc 和 cmake(apt-get 版本太旧)的 ubuntu 14.04 LTS。如果我在本地使用它(通过 docker --link 命令)一切正常,但是当 gitlab-ci-runner 处理它时,我得到以下警告(在我的情况下这是一个错误)

Running with gitlab-ci-multi-runner 9.2.0 (adfc387)
on xubuntuci1 (19c6d3ce)
Using Docker executor with image ubuntu:14.04 ...
Starting service rikorose/gcc-cmake:gcc-5 ...
Pulling docker image rikorose/gcc-cmake:gcc-5 ...
Using docker image rikorose/gcc-cmake:gcc-5 
ID=sha256:ef2ac00b36e638897a2046c954e89ea953cfd5c257bf60103e32880e88299608 
for rikorose/gcc-cmake service...
Waiting for services to be up and running...

*** WARNING: Service runner-19c6d3ce-project-54-concurrent-0-rikorose__gcc-
cmake probably didn't start properly.

Error response from daemon: Cannot link to a non running container: /runner-
19c6d3ce-project-54-concurrent-0-rikorose__gcc-cmake AS /runner-19c6d3ce-
project-54-concurrent-0-rikorose__gcc-cmake-wait-for-service/runner-
19c6d3ce-project-54-concurrent-0-rikorose__gcc-cmake

有人知道我该如何解决这个问题吗?

提前致谢 零陵香豆

【问题讨论】:

  • 如何在本地运行rikorose/gcc-cmake:gcc-5
  • docker run -itd rikorose/gcc-cmake:gcc-5 --link=myrunningubuntucontainer
  • 您使用共享跑步者还是设置了自己的跑步者?
  • 这是我自己托管的共享跑步者

标签: gitlab gitlab-ci gitlab-ci-runner


【解决方案1】:

你必须启动 gitlab-runner 容器

--privileged true

但这还不够。注册后由 gitlab 启动的任何运行器容器也需要特权。所以需要挂载gitlab-runner

docker exec -it runner /bin/bash
nano /etc/gitlab-runner/config.toml

并将特权标志从 false 更改为 true:

privileged = true

这样就解决问题了!

注意:您也可以将 config.toml 作为卷挂载到容器上,然后您无需登录容器即可将 privileged 更改为 true,因为您可以在运行之前预先配置容器。

【讨论】:

  • 正是这为我解决了这个问题,非常感谢!据我所知,官方说明中没有提到....
  • 我已经在特权模式下启动了容器。这对我没有帮助。
  • 以特权模式启动容器是不够的。是否登录容器并更改了 config.toml 中的 privileged 标志?
  • @wendellmva 我不明白。为什么我需要登录到容器,这是不正常的。
  • @holms,如果你想一想 gitlab 跑步者是如何工作的。 gitlab ci-cd 是一个子系统,它使用您定义的 gitlab-runner 容器来启动自身的副本以托管多个并发构建阶段和进程。他们都需要享有特权。所以第一个标志是第一个容器,第二个是所有由 gitlab 启动的容器。
猜你喜欢
  • 2021-08-21
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 2018-01-01
  • 2016-02-25
  • 2017-04-01
  • 2019-05-13
相关资源
最近更新 更多