gpt4 book ai didi

docker - GitLab CI-无法从镜像内连接到Docker守护程序

转载 作者:行者123 更新时间:2023-12-02 19:34:52 26 4
gpt4 key购买 nike

我有一个基于节点的项目,以下是在构建过程中必须执行的前几个步骤:

npm install
npm run build
docker build -t client .

上面的最后一个命令将构建以下Dockerfile:
FROM docker.artifactory.abc.net/nginx
COPY build /usr/share/nginx/html
COPY default.conf /etc/nginx/conf.d/default.conf
.gitlab-ci.yml的内容:
image: docker.artifactory.abc.net/docker/node:1.0

stages:
- build
- deploy

build:
stage: build
script:
- npm install
- npm run build
- docker build -t client .

在上面的Dockerfile中,我使用的是自定义节点镜像( node:1.0),其中包含 apk可以工作的代理设置以及Artifactory配置,因此所有依赖项都可以使用Artifactory来获取。现在,当我运行此构建时,执行最后一个命令( docker: command not found)时出现了 docker build -t client .错误,这是预期的,因为基本镜像用于 node且不包含 docker。因此,我在基于 this链接的节点Dockerfile上添加了docker设置说明,除了最后3行中配置ENTRYPOINT和CMD的内容。

现在,当我运行构建时,我得到:
$ docker build -t client .
Sending build context to Docker daemon 372.7MB

Step 1 : FROM docker.artifactory.abc.net/nginx
Get https://docker.artifactory.abc.net/v2/nginx/manifests/latest: unknown: Authentication is required
ERROR: Job failed: exit code 1

根据我过去的经验,此错误与运行 docker login命令有关。由于 official image中的docker设置使用tar,因此我不得不将 docker用户添加到 /etc/group中,然后将当前用户(root)添加到 docker组中。还向Dockerfile中添加了 docker login命令,如下所示:
    addgroup docker; \
adduser root docker; \
docker login docker.artifactory.abc.net -u svc-art -p "ZTg6#&kq"; \

之后,如果我尝试构建此Dockerfile,则会出现以下错误:
+ dockerd -v
Docker version 17.05.0-ce, build v17.05.0-ce
+ docker -v
Docker version 17.05.0-ce, build v17.05.0-ce
+ adduser root docker
+ tail -2 /etc/group
node:x:1000:node
docker:x:101:root
+ docker login docker.artifactory.abc.net -u svc-art -p ZTg6#&kq
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

我也做了一个 ls -ltr /var/run/docker.sock;,镜像中没有docker socket文件。这似乎是问题所在。

任何想法,我怎么能使这个工作?

最佳答案

从您提供的示例中,我看不到您在何处调用docker服务,因此我假设您没有调用它,也没有登录注册表。

管道的外观应如下所示:

 image: docker.artifactory.abc.net/docker/node:1.0

stages:
- build
- deploy

build:
image: docker:latest
services:
- docker:dind
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.example.com
- docker build -t registry.example.com/group/project/image:latest .
- docker push registry.example.com/group/project/image:latest

您还可以找到更多信息 here

关于docker - GitLab CI-无法从镜像内连接到Docker守护程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688080/

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