Jenkins 构建的时候提示 DOCKER_HOST 错误

我们在使用 Jenkins 构建我们的一个 Docker 项目的时候提示:

[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.40.2:build (default) on project api: Execution default of goal io.fabric8:docker-maven-plugin:0.40.2:build failed: No <dockerHost> given, no DOCKER_HOST environment variable, no read/writable '/var/run/docker.sock' or '//./pipe/docker_engine' and no external provider like Docker machine configured -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:

通过日志我们了解到上面的问题就是 Jenkins 没有办法调用 Docker 的构建命令。

问题和解决

我们尝试了很多种方法来解决这个问题。

包括有重新安装 Docker,重新写脚本等等,都发现没有办法解决。

然后我们在下载的 Git 代码中直接使用 Root 账号进行编译,发现是没有问题的。

这个就让我想到,有没有可能是因为 Jenkins 的用户没有访问 Docker 的权限

因为 Jenkins 的编译是在 Jenkins 自己这个账号下运行的的。

随后我们运行了下面 2 个命令。

sudo gpasswd -a jenkins docker

sudo usermod -a -G docker jenkins

上面命令运行后的输出如下:

[root@devops-norctx-com Usvisatrack-Api-Service]# sudo gpasswd -a jenkins docker
Adding user jenkins to group docker
[root@devops-norctx-com Usvisatrack-Api-Service]# sudo usermod -a -G docker jenkins

简单来说,上面 2 个命令执行的结果就是吧 Jenkins 这个用户加到 Docker 这个用户组里面。

在完成上面的配置后,重启 Jenkins。

然后再进行编译,我们发现提示没有办法执行 Docker 打包的问题就解决了。

Jenkins 构建的时候提示 DOCKER_HOST 错误 - DevOps - OSSEZ

 

要在Jenkins构建后部署Docker镜像,您可以按照以下步骤进行配置: 1. 安装Docker:确保Jenkins所在的主机已经安装了Docker。您可以根据操作系统的不同,使用适当的方式来安装Docker。 2. 在Jenkins中安装相关插件:打开Jenkins的管理界面,导航到"Manage Jenkins" -> "Manage Plugins"。在“可选插件”选项卡中搜索并安装"Docker Pipeline"插件和"CloudBees Docker Build and Publish"插件。 3. 配置Docker凭证:在Jenkins的管理界面中,导航到"Credentials" -> "System" -> "Global credentials (unrestricted)"。点击"Add Credentials",选择"Docker Host Certificate Authentication"或"Docker Registry Authentication",然后填写相应的凭证信息。 4. 创建Jenkins Pipeline任务:在Jenkins的主界面中,点击"New Item"创建一个新的Pipeline任务。在Pipeline定义中,可以使用Groovy语法编写构建和部署步骤。 5. 在Pipeline脚本中定义构建和部署步骤:在Pipeline脚本中,您可以使用Docker Pipeline插件提供的方法来构建和部署Docker镜像。例如,您可以使用docker.build()方法来构建镜像,使用docker.withRegistry()方法来推送镜像到Docker仓库。 以下是一个简单的Pipeline脚本示例: ```groovy pipeline { agent any stages { stage('Build') { steps { script { docker.build('my-docker-image') } } } stage('Deploy') { steps { script { docker.withRegistry('https://docker-registry.example.com', 'my-docker-credentials') { docker.image('my-docker-image').push() } } } } } } ``` 在上述示例中,"my-docker-image"是要构建和部署的Docker镜像的名称。您可以根据实际情况进行修改。 6. 保存并触发构建:保存Pipeline任务配置后,您可以手动触发构建,或者设置自动触发条件,例如代码提交到版本控制库时触发构建。 配置完成后,Jenkins将会在构建过程中自动构建Docker镜像,并将其部署到指定的Docker仓库中。您可以根据需要进行定制和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HoneyMoose

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值