无法在 gitlab-ci runner 上运行最新的 docker

2024-04-17

我正在测试 gitlab-ci 并尝试从 Dockerfile 在注册表上生成图像。

我有相同的代码只是为了测试:

#gitlab-ci 
image: docker:latest

tages:
  - build
  - deploy

build_application:
  stage: build
  script:
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . -f Dockerfile
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-test

output:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

docker 正在运行,正在拉取映像,但我无法执行 docker 命令。

在我的本地环境中如果运行:

docker run -it docker:latest

我留在容器内并运行 docker info 我也遇到了同样的问题。我必须通过以下方式运行容器来修复它:

docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:latest

但我不知道如何在 gitlab-ci 上修复它。我这样配置我的跑步者:

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

也许有人可以让我走上正确的方向。 谢谢


By default https://docs.gitlab.com/ce/ci/docker/using_docker_build.html无法运行 docker-in-docker (DIND)(作为安全措施)。

本节 https://docs.gitlab.com/ce/ci/docker/using_docker_build.htmlGitlab 文档中的内容是您的解决方案。您必须使用 Docker-in-Docker。

配置您的跑步者以使用 DIND 后.gitlab-ci.yml看起来像这样:

#gitlab-ci 
image: docker:latest

variables:
  DOCKER_DRIVER: overlay2

services:
- docker:dind

before_script:
- docker info

stages:
  - build
  - deploy

build_application:
  stage: build
  script:
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . -f Dockerfile
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-test
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 gitlab-ci runner 上运行最新的 docker 的相关文章

随机推荐