【问题标题】:Jenkins cannot use docker: Cannot connect to the Docker daemonJenkins 无法使用 docker:无法连接到 Docker 守护进程
【发布时间】:2023-03-04 03:15:01
【问题描述】:

我已经通过 helm 在我的 k8s 集群中安装了 jenkins。 我一直在尝试构建 docker 映像并将其推送到 gitlab registery,以便稍后通过 cloudbees docker 插件将其用于部署,但我一直收到此错误此错误:

   Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/Build
using credential gitlab
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://gitlab.com/Ferios08/letsdevops-angular.git # timeout=10
Fetching upstream changes from https://gitlab.com/Ferios08/letsdevops-angular.git
 > git --version # timeout=10
using GIT_ASKPASS to set credentials gitlab
 > git fetch --tags --progress -- https://gitlab.com/Ferios08/letsdevops-angular.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision bbfedaeb976edde010c496c63de43ec01184011e (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f bbfedaeb976edde010c496c63de43ec01184011e # timeout=10
Commit message: "fixed deploy"
 > git rev-list --no-walk bbfedaeb976edde010c496c63de43ec01184011e # timeout=10
[Build] $ /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker/bin/docker build -t registry.gitlab.com/ferios08/letsdevops-angular --pull=true /var/jenkins_home/workspace/Build
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE

任何想法如何解决它?并感谢

【问题讨论】:

  • 尝试使用sudo运行
  • 您未能说明您的 helm chart 是否包含将主机的 /var/run/docker.sock 暴露给您的 Pod 的 volume: hostPath:;您实际上没有指定关于您的安装的任何内容,就好像我们是通灵者一样
  • 请提供您为达到此阶段所做的步骤。
  • 抱歉回复晚了:我已经通过 link 使用 helm 在 k8s 集群中安装了 Jenkins,jenkins 没有使用 docker 的权限,我有点无法改变这一事实我没有安装在单独的机器上。当我单独安装 Jenkins 时,它可以在我使用 sudo usermod -aG docker jenkins 时工作
  • 您的 Kubernetes 集群是如何创建的?裸机、GKE、AKS、EKS?

标签: docker jenkins kubernetes kubernetes-helm cloudbees


【解决方案1】:

在我看来你的 docker 守护进程没有运行。

【讨论】:

  • @Jakub 我不能在 k8s 上使用 sudo 和 jenkins
  • 更多的是权限
  • 怎么回事?很明显,您的服务没有运行或没有打开任何文件供 IPC 使用或确定它是否正在运行(即 sock/run)
  • 在集群外安装 Jenkins 并输入 sudo usermod -aG docker jenkins 以授予其使用 docker 的权限时,它可以正常工作。
【解决方案2】:

您正在尝试连接到容器内部的 docker daemon,但容器内的 docker daemon 未运行。

有几种可能:

  1. 你可以运行docker in docker

  2. 您可以使用 -v 将集群的 docker 套接字绑定到您的容器

docker run -v /var/run/docker.sock:/var/run/docker.sock

  1. 您可以使用 docker context 将容器内的 docker 连接到某个远程 docker 套接字(docker 版本 >=19.03)

  2. 你可以在集群外安装jenkins

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2020-06-03
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2016-02-07
    相关资源
    最近更新 更多