gpt4 book ai didi

docker - 无法在gitlab CI中的unix:///var/run/docker.sock上连接到Docker守护程序

转载 作者:行者123 更新时间:2023-12-02 18:48:20 25 4
gpt4 key购买 nike

我看了其他任何问题,但找不到自己的解决方案!我在gitlab中设置了CI,并使用gitlab的共享运行器。在构建阶段,我使用docker镜像作为基础镜像,但是当我使用docker命令时,它说:

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



我查看了 this主题,但仍然不明白该怎么办?

.gitlab-ci.yml :


stages:
- test
- build
- deploy

job_1:
image: python:3.6
stage: test
script:
- sh ./sh_script/install.sh
- python manage.py test -k

job_2:
image: docker:stable
stage: build
before_script:
- docker info
script:
- docker build -t my-docker-image .

我知道gitlab运行程序必须注册才能使用 docker并共享 /var/run/docker.sock!但是当使用gitlab自己的运行器时该怎么做?

最佳答案

啊,那是我可爱的话题-将docker用作gitlab ci。您遇到的问题被称为docker-in-docker

在配置它之前,您可能需要阅读以下精彩文章:http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

这将使您了解什么是问题以及最适合您的解决方案。通常有两种主要方法:在docker内实际安装docker守护程序,以及将主机的守护程序共享到容器。选择哪种方法-取决于您的需求。

gitlab中,您可以采用多种方式,我将分享我们的经验。

方式1-使用docker:dind作为服务。

设置非常简单。只需将docker:dind作为共享服务添加到gitlab-ci.yml文件,然后将docker:latest图像用于您的工作。

image: docker:latest  # this sets default image for jobs
services:
- docker:dind

优点:
  • 易于设置。
  • 易于运行-默认情况下,您的cwd中的工作可使用您的源代码,因为它们直接被拉到您的dockerRunner上

  • 缺点:您必须为该服务配置Docker注册表,否则,每次管道启动时,都会从头开始构建 Dockerfile。对于我来说,这是 Not Acceptable ,因为可能要花费一个多小时,具体取决于您拥有的容器数量。

    方法2-共享主机docker守护程序的/var/run/docker.sock

    我们使用docker守护程序设置了自己的docker executor,并通过将其添加到 /etc/gitlab-runner/config.toml文件中来共享套接字。因此,我们使机器的docker守护程序可用于容器内的 docker cli注意-在这种情况下,您不需要执行者使用 特权模式。

    之后,我们可以在自定义docker镜像中同时使用 dockerdocker-compose。此外,我们不需要特殊的Docker注册表,因为在这种情况下,我们在所有容器之间共享执行者的注册表。

    缺点

    在这种情况下,您需要以某种方式将源传递到您的容器,因为您只能将它们安装到docker executor,而不安装到从其启动的容器。我们已停止使用 git clone $CI_REPOSITORY_URL --branch $CI_COMMIT_REF_NAME --single-branch /project之类的命令克隆它们

    关于docker - 无法在gitlab CI中的unix:///var/run/docker.sock上连接到Docker守护程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53968749/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com