Gitlab-runner dind 导致错误:作业失败(系统故障):来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:380:

Posted

技术标签:

【中文标题】Gitlab-runner dind 导致错误:作业失败(系统故障):来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:380:【英文标题】:Gitlab-runner dind results in ERROR: Job failed (system failure): Error response from daemon: OCI runtime create failed: container_linux.go:380: 【发布时间】:2021-08-22 23:41:18 【问题描述】:

项目gitlab-runner的执行者是docker。我尝试运行 docker-in-docker 并从管道中收到以下错误:

错误:作业失败(系统故障):来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:process_linux.go:545:容器初始化导致:process_linux.go:508:设置procHooks 进程的 cgroup 配置导致:结果设备 cgroup 与目标模式不匹配:未知 (docker.go:385:0s)

我遵循了这个指南:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-continuous-deployment-pipeline-with-gitlab-ci-cd-on-ubuntu-18-04,并且在阅读了 gitlab CI/CD 和 gitlab-runner 的文档之后,但我不知道如何解决这个问题。

这是我目前的 config.toml 文件:

check_interval = 0
log_level = "debug"

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-runner"
  url = my-url
  token = token
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "docker:20"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

这是我的 gitlab-ci.yaml

stages:
  - publish

variables:
  DOCKER_TLS_CERTDIR: ""

publish:
  image: docker:20
  stage: publish
  tags:
    - publish
  services:
    - docker:20-dind
  script:
    - docker version

首先我不明白错误消息,其次如何解决?

【问题讨论】:

【参考方案1】:

我通过 docker 降级解决了:

sudo apt-get install --reinstall docker-ce=5:18.09.9~3-0~ubuntu-bionic docker-ce-cli=5:18.09.9~3-0~ubuntu-bionic docker-ce-rootless-extras containerd.io=1.3.9-1

问题是我在带有 Ubuntu 18 的 V-Server (Virtuozzo) 上运行。看来 Virtuozzo 目前不支持最新的 Docker 引擎。

【讨论】:

以上是关于Gitlab-runner dind 导致错误:作业失败(系统故障):来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:380:的主要内容,如果未能解决你的问题,请参考以下文章

另一台服务器上的Gitlab-runner

当 URL 在浏览器中工作时,啥可能导致“连接 ETIMEDOUT”错误?

gitlab-runner config for docker runner

为自己的 docker 注册表提供 dockerd 的 SSL 证书

docker-dind

gitlab-runner运行一直卡住