Dockerized Jenkins 无法找到 docker

Dockerized Jenkins not able to find docker

我正在尝试建立一个能够构建 docker 图像的 Jenkins 管道。但是我运行在执行管道后进入了问题docker: not foundJenkinsfile 包含以下内容:

pipeline {
    agent { dockerfile true }
    stages {
        stage('Test') {
            steps {
                sh 'docker --version '
            }
        }
    }
}

这是一个简单的入门脚本。但是似乎dockerized Jenkins安装找不到合适的docker安装使用。 安装了所需的插件(DockerDocker pipeline),并且存在全局 docker 安装配置。但是错误一直存在。

Jenkins 设置是使用这个 docker-compose:

version: '3.1'

networks:
  docker:

volumes:
  jenkins-data:
  jenkins-docker-certs:

services:

  jenkins:
    image: jenkins/jenkins:lts
    restart: always
    networks:
      - docker
    ports:
      - 8090:8080
      - 50000:50000
    tty: true
    volumes:
      - jenkins-data:/var/jenkins_home
      - jenkins-docker-certs:/certs/client:ro
      - $HOME:/home
    environment:
      - DOCKER_HOST=tcp://docker:2376
      - DOCKER_CERT_PATH=/certs/client
      - DOCKER_TLS_VERIFY=1

  dind:
    image: docker:dind
    privileged: true
    restart: always
    networks:
      docker:
        aliases:
          - docker
    ports:
      - 2376:2376
    tty: true
    volumes:
      - jenkins-data:/var/jenkins_home
      - jenkins-docker-certs:/certs/client
      - $HOME:/home
    environment:
      - DOCKER_TLS_CERTDIR=/certs

在阅读了更多关于该问题的 post 并遵循 Jenkins 官方文档后,我认为为此目的使用了 docker:dind。也许我在这里错过了一些重要的配置?启动 docker:dind 容器时,日志显示以下警告消息:could not change group /var/run/docker.sock to docker: group docker not found,但该组存在并且我能够 运行 docker 命令而不指定 [=21] =]. (按照官方dockerpost-安装步骤)

现在的另一个问题是,Jenkins 无法保留一般的配置数据或管道相关的东西。重启机器后每次都要通过向导,我不知道为什么。

有人遇到过类似的问题吗?

多谢指教!

你的 docker-compose 文件是正确的,你只需要在 jenkins 容器中添加一个卷:

- /usr/bin/docker:/usr/bin/docker

您还有很多不需要的配置,您可以查看此link以查看其他可能的配置。您实际上使用的是解决方案 3,您可以切换到这个 docker-compose 文件。

对于卷,它们应该被持久化,因为它们是在卷部分中声明的。如果需要,您可以尝试使用 external volumes