詹金斯:无法连接到 Docker 守护进程
jenkins : Cannot connect to the Docker daemo
我想用 jenkins 创建一个 docker 镜像,但无法连接到 Docker 守护进程。
这是我的管道
pipeline {
agent any
options { buildDiscarder(logRotator(numToKeepStr:'5'))}
environment {DOCKERHUB_CREDENTIALS = credentials('tfkben-dockerhub')}
stages {
stage('build'){ steps { sh 'docker build -t tfkben/ben:latest .' } }
stage('Login'){ steps { sh 'echo $DOCKERHUB_CREDENTIALS_PSW | docker login -u $DOCKERHUB_CREDENTIALS_USR --password-stdin ' }}
stage('Push'){ steps { sh 'docker push tfkben/ben:latest'} }
}
post { always { sh 'docker logout' }}
}
我的 Docker 文件:
FROM python:3.11-rc-bullseye
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
CMD [ "python3", "manage.py", "runserver", "0.0.0.0:8000"]
and this is the error message :
- docker build -t tfkben/ben:latest 。
无法连接到位于 tcp://docker:2376 的 Docker 守护程序。 docker 守护程序是 运行 吗?
这可能是因为您的 Jenkins 代理中没有 Docker 守护进程 运行。
如果代理本身是 运行 作为 Docker 容器,那么您需要确保它使用具有“Docker-in-Docker” (dind)
@Toufik Benkhelifa 您的 jenkins 代理中似乎没有安装 docker。您的 Jenkins 代理住在哪里?这里有几种可能性。
- 如果您使用任何 Linux 发行版 OS(Ubuntu、Redhat、centos 等)作为 Jenkins 代理,那么您可以在其中显式安装 docker 守护程序经纪人。
参考:https://docs.docker.com/engine/install/
- 如果您运行将代理作为 docker 容器,那么您可以执行类似于下面的操作
假设您有 Jenkins master 和 Jenkins agent 运行ning 作为 docker 节点。
其中,
- Jenkins Master 实际上 运行 在 Docker 中作为 Docker 容器
- Jenkins Agent 运行在 Docker 中作为 Docker 容器
- 现在 Jenkins Master 正在通过 tcp://host.docker.internal:2375
中的 Docker Demon 与主机 Docker 通信
- 一旦 Jenkins Master 与 Docker Demon 连接,它就可以通过 Demon 与 运行ing 在 Docker 主机内的任何容器安全通信,因为它将拥有所有与不同容器通信的网络信息,在本例中它将是一个 Docker 容器 运行ning Jenkins 代理。
现在,Link Jenkins 掌握 Docker 主机守护进程。为此,您需要使用“Docker Jenkins 插件”https://plugins.jenkins.io/docker-plugin/
此 docker 插件的目的是能够使用 Docker 主机动态提供 docker 容器作为 Jenkins 代理节点,让 运行 单个构建,然后 tear-down 该节点,构建过程(或 Jenkins 作业定义)不需要任何对 docker 的感知。
安装插件后,我们需要做的就是配置 Jenkins 添加新云,从 Jenkins -> 管理 -> 系统配置并添加新云 'Docker'
最后,如前所述,Docker恶魔将在运行上
tcp://host.docker.internal:2375
这需要是 Docker 主机 URI
参考:https://blog.executeautomation.com/running-jenkins-build-agent-within-docker-container-part-a/
我想用 jenkins 创建一个 docker 镜像,但无法连接到 Docker 守护进程。
这是我的管道
pipeline {
agent any
options { buildDiscarder(logRotator(numToKeepStr:'5'))}
environment {DOCKERHUB_CREDENTIALS = credentials('tfkben-dockerhub')}
stages {
stage('build'){ steps { sh 'docker build -t tfkben/ben:latest .' } }
stage('Login'){ steps { sh 'echo $DOCKERHUB_CREDENTIALS_PSW | docker login -u $DOCKERHUB_CREDENTIALS_USR --password-stdin ' }}
stage('Push'){ steps { sh 'docker push tfkben/ben:latest'} }
}
post { always { sh 'docker logout' }}
} 我的 Docker 文件:
FROM python:3.11-rc-bullseye
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
CMD [ "python3", "manage.py", "runserver", "0.0.0.0:8000"]
and this is the error message :
- docker build -t tfkben/ben:latest 。 无法连接到位于 tcp://docker:2376 的 Docker 守护程序。 docker 守护程序是 运行 吗?
这可能是因为您的 Jenkins 代理中没有 Docker 守护进程 运行。
如果代理本身是 运行 作为 Docker 容器,那么您需要确保它使用具有“Docker-in-Docker” (dind)
@Toufik Benkhelifa 您的 jenkins 代理中似乎没有安装 docker。您的 Jenkins 代理住在哪里?这里有几种可能性。
- 如果您使用任何 Linux 发行版 OS(Ubuntu、Redhat、centos 等)作为 Jenkins 代理,那么您可以在其中显式安装 docker 守护程序经纪人。
参考:https://docs.docker.com/engine/install/
- 如果您运行将代理作为 docker 容器,那么您可以执行类似于下面的操作
假设您有 Jenkins master 和 Jenkins agent 运行ning 作为 docker 节点。
其中,
- Jenkins Master 实际上 运行 在 Docker 中作为 Docker 容器
- Jenkins Agent 运行在 Docker 中作为 Docker 容器
- 现在 Jenkins Master 正在通过 tcp://host.docker.internal:2375 中的 Docker Demon 与主机 Docker 通信
- 一旦 Jenkins Master 与 Docker Demon 连接,它就可以通过 Demon 与 运行ing 在 Docker 主机内的任何容器安全通信,因为它将拥有所有与不同容器通信的网络信息,在本例中它将是一个 Docker 容器 运行ning Jenkins 代理。
现在,Link Jenkins 掌握 Docker 主机守护进程。为此,您需要使用“Docker Jenkins 插件”https://plugins.jenkins.io/docker-plugin/
此 docker 插件的目的是能够使用 Docker 主机动态提供 docker 容器作为 Jenkins 代理节点,让 运行 单个构建,然后 tear-down 该节点,构建过程(或 Jenkins 作业定义)不需要任何对 docker 的感知。
安装插件后,我们需要做的就是配置 Jenkins 添加新云,从 Jenkins -> 管理 -> 系统配置并添加新云 'Docker'
最后,如前所述,Docker恶魔将在运行上
tcp://host.docker.internal:2375
这需要是 Docker 主机 URI
参考:https://blog.executeautomation.com/running-jenkins-build-agent-within-docker-container-part-a/