alpine在使用gitlab-ci时无法访问docker守护程序

19 浏览
0 Comments

alpine在使用gitlab-ci时无法访问docker守护程序

我有一个定制的GitLab CI,我想要编译一个Golang应用程序并构建一个Docker镜像。我决定使用alpine Docker镜像来运行GitLab Runner。但是我无法启动docker。我尝试手动启动docker并且出现了一个错误(* WARNING: docker is already starting),而如果我不手动启动docker服务,就会出现(Fails (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?)还有其他人遇到过这个问题吗?

这不是一个重复的问题。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 # 如果我不运行(service docker start),我会得到这个信息:Fails (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?)

0
0 Comments

默认情况下,无法使用Docker-in-docker。您应该按照此链接中的说明进行配置。然后,根据解释中的说明,使用docker:latest作为镜像,而不是alpine

问题原因:默认情况下,无法在Alpine镜像中访问Docker守护程序。

解决方法:

1. 根据链接中的说明,配置您的Runner使其支持Docker-in-docker。

2. 在GitLab CI配置文件中,将镜像更改为docker:latest,以便使用Docker守护程序。

这样做可以解决“alpine cannot access docker daemon when using gitlab-ci”问题。

0