Jenkins:无法连接到Docker守护程序

pcs*_*ram 26 centos jenkins docker

我在CentOS机器上运行Jenkins和Docker.我有一个Jenkins工作,可以获取Github仓库并构建Docker镜像.当我尝试运行作业时,我收到错误:

+ docker build -t myProject . Cannot connect to the Docker daemon. Is the docker daemon running on this host? Build step 'Execute shell' marked build as failure Finished: FAILURE

即使我已经通过sudo usermod -aG docker jenkins并重新启动我的机器将jenkins添加到我的docker用户组,也会发生这种情况.我该如何解决?

顺便说一句,如果尝试将命令更改为sudo docker build -t myProject .我只是得到错误sudo: sorry, you must have a tty to run sudo

lvt*_*llo 37

安装Jenkins和Docker之后.将jenkins用户添加到dockergroup(就像你一样)

sudo gpasswd -a jenkins docker
Run Code Online (Sandbox Code Playgroud)

编辑以下文件

vi /usr/lib/systemd/system/docker.service
Run Code Online (Sandbox Code Playgroud)

并编辑此规则以公开API:

ExecStart=/usr/bin/docker daemon -H unix:// -H tcp://localhost:2375
Run Code Online (Sandbox Code Playgroud)

现在是时候重新加载并重新启动Docker守护程序了

systemctl daemon-reload
systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

然后我重新启动了jenkins,我能够在我的jenkins工作中以jenkins用户身份执行docker命令

sudo service jenkins restart
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这很有效.只是好奇,如何将ExecStart行的TCP地址添加到Docker以及它与Jenkins交谈的方式? (4认同)
  • 所以Jenkins不能直接调用Docker,即使它安装在同一台机器上? (2认同)

小智 8

我和詹金斯有同样的问题。

我确实通过在 docker-compose.yml 上添加/var/run/docker.sock:/var/run/docker.sock来修复它:

  jenkins:
  container_name: jenkins
  build: "jenkins/"
  ports:
    - "8080:8080"
  environment:
    - JAVA_OPTS:-Djava.awt.headless=true
  volumes:
    - /var/jenkins_home
    - /var/run/docker.sock:/var/run/docker.sock
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。谢谢。我正在使用 Kubernetes pod temaplce,因此需要添加: `hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock')` (2认同)