准备失败:无法通过unix:///var/run/docker.sock

时间:2018-10-08 06:45:56

标签: node.js docker gitlab-ci-runner

我启动了一个docker容器gitlab-ci-runner,然后使用docker作为执行程序并使用node:latest作为docker映像注册了运行程序。 但是当我将提交推送到gitlab时,出现了这个错误:

Running with gitlab-runner 11.3.1 (0aa5179e)
  on docker-ci 0f9fe2c4
Using Docker executor with image node:latest ...
ERROR: Preparation failed: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (executor_docker.go:1150:0s)

这是我的gitlab config.toml:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker-ci"
  url = "http://gitlab.xxxxxx.com/"
  token = "0......fc5"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "node:latest"
    privileged = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

我使用以下方法启动容器:

sudo docker run -d --name gitlab-runner --restart always \
 -v ~/srv/gitlab-runner/config:/etc/gitlab-runner \
 -v ~/var/run/docker.sock:/var/run/docker.sock \
 gitlab/gitlab-runner:latest

并使用以下地址注册:

sudo docker run --rm -t -i -v ~/srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

我是Docker的新手,找不到错误原因。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

由于您的CLI容器或gitlab-ci-runner container需要在容器中挂载主机的Docker套接字。这将允许您的容器使用主机的Docker守护程序来运行容器并构建映像。

您只需要修改 gitlab-ci-runner 的运行命令。

docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

答案 1 :(得分:0)

我的情况是我的机器上没有docker。这是安装文档 https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce

sudo apt-get install docker-ce docker-ce-cli containerd.io

答案 2 :(得分:0)

正如@Adiii 所提到的。区别在于:

  1. docker-container 的启动方式需要将卷挂载从 ~/var/run/docker.sock:/var/run/docker.sock/srv/run/docker.sock:/var/run/docker.sock 更改为 /var/run/docker.sock:/var/run/docker.sock
  2. 还有config.toml
[[runners]]
  [runners.docker]
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]

哪里 “/var/run/docker.sock:/var/run/docker.sock”是重要的变化。

最好在此处的问题讨论中描述: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1986