当前位置: 首页 > 知识库问答 >
问题:

使用gitlab-ci时,高山无法访问docker守护进程

松高爽
2023-03-14

我有一个定制的gitlab ci,我想编译一个Golang应用程序并构建一个docker映像。我决定在gitlab runner中使用alpine docker图像。我无法启动docker。我试图手动启动docker,但出现了一个错误(*警告:docker已经启动了),如果我没有手动启动docker服务,则会出现(失败(无法连接到unix:///var/run/docker.sock.docker守护程序是否正在运行 )还有其他人经历过这种情况吗?

这不是一个重复的问题。Gitlab runner在root中运行docker alpine容器(通过运行whoami进行验证)。为了尝试,我确实尝试了usermod-aG docker$(whoami),并获得了相同的输出。

.gitlab-ci.yml

image: alpine

variables:
  GO_PROJECT: linkscout

before_script:
  - apk add --update go git libc-dev docker openrc
  - mkdir -p ~/go/src/${GO_PROJECT}
  - cp -r ${CI_PROJECT_DIR}/* ~/go/src/${GO_PROJECT}/
  - cd  ~/go/src/${GO_PROJECT}
  - service docker start #  * WARNING: docker is already starting

stages:
    - compile
    - build

compile:
    stage: compile
    script:
      - go get
      - go build -a

build:
    stage: build
    script:
     - docker version # If I don't run (service docker start) I get this message: Fails (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?)

共有1个答案

梁福
2023-03-14

默认情况下,您不能使用Docker-in-docker。您应该这样配置您的运行程序。然后,如解释中所述,还使用docker:最新的作为映像,而不是alpin

 类似资料:
  • 我试图使用jib Maven插件在Gitlab continuous integration中使用我的应用程序构建docker映像,但我无法使用dind(docker in docker)服务将插件连接到docker守护程序。目前我正在gitlab ci中使用此配置。yml文件: 这就是我得到的错误: [错误]无法执行目标com。谷歌。云工具:jib maven插件:0.9.11:project

  • 我正在运行安装了以下docker软件的Ubuntu:

  • 问题内容: 我已经添加了 到/ etc / default / docker以使Docker API在我的主机上可访问(我在Ubuntu VM上的Virtualbox中运行Docker)。但是,当我尝试立即运行任何Docker命令时,我只会收到以下错误消息: 我尝试了sudo service docker restart,并重新启动了机器,但没有任何反应。知道是什么问题吗? 问题答案: 要通过tc

  • 我正在尝试运行react本机项目,但我看到一个错误,上面写着“启动一个Gradle守护进程,14个繁忙,1个不兼容,2个停止的守护进程无法重用,请使用--status了解详细信息”,之后终端保持空闲。 您好,我已经按照官方反应原生文档中概述的步骤开始了一个新的反应原生项目。一切都很完美,直到我在模拟器打开的情况下运行react-原生run-android命令。我得到了以下错误: “启动Gradle

  • 我了解到Microsoft Graph是访问所有个人商业账户的方式。 > 所以我用我的OneDrive凭据myname@yandex.com登录了Azure(免费)门户,登录后用mynameyan...@onmicrosoft.com作为主体用户创建了一个Azure默认目录。 遵循教程,在应用程序注册下创建应用程序,授予它所有的权限,还通过门户管理同意,生成客户端秘密,并从门户->Azure目录-

  • 建议在开发环境中使用Gradle的守护进程,不建议在持续集成环境和构建服务器环境中使用守护进程. 守护进程可以更快的构建,这对于一个正坐在椅子前构建项目的人来说非常重要.对于CI构建来说,稳定性和可预见性是最重要的.为每个构建运行时用一个新的,完全孤立于以前的版本的程序,更加可靠。