解决Jenkins集成docker插件问题的一些方法

 更新时间:2021年10月22日 10:17:04   作者:职说测试  
本文主要介绍了Jenkins集成docker插件问题的一些方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

背景

测试环境使用Jenkins集成docker插件实现测试环境一键部署服务,首先jenkins已安装docker build and publish插件,但是运营job出现了一系列的问题!

问题一

docker执行报错,Build step 'Docker Build and Publish' marked build as failure,导致这句的问题有很多,更详细的错误信息:jenkins容器不支持docker操作?

分析问题:jenkins是使用docker部署的,那么在jenkins容器中并不会有docker相关的操作命令,所以执行失败!

解决方案:需要将宿主机的docker环境映射到jenkins容器中,才能使用docker命令行

docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v /var/jenkins_home:/var/jenkins_home -u 0 -d jenkins/jenkins:lts

再次执行,结果还是不对,没有解决!

错误二

提示bin目录下无可执行命令?

分析:我们知道安装的任何一个环境,如果想在linux环境执行它的命令行,都需要加入环境变量:/usr/bin

解决:继续映射宿主机docker可执行命令

docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v /var/jenkins_home:/var/jenkins_home -u 0 -d jenkins/jenkins:lts

tips:which命令,有点类似whereis 查找命令或者文件:前者查看系统环境变量中的命令(返回第一个结果),后者程序名相关路径(返回所有匹配的结果)

错误三

找不到相关依赖:error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or/libltdl.so.7

分析:jenkins容器内部,因为容器与宿主机没有共享,在宿主机可以找到该库:cd usr/lib64/ 

解决:在宿主机找到libltdl.so.7 依赖库,挂载容器即可

docker run --name myjenkins -p 8123:8080 -p 50000:50000 -v /run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /var/jenkins_home:/var/jenkins_home -v /var/data/shell:/var/data/shell -u 0 -d jenkins/jenkins:lts

错误四

no basic auth credentials 没有认证

分析原因:这个插件是在jenkins容器内部使用docker命令,build镜像不会报错,是在容器内,当需要push到镜像仓库时,需要auth

解决办法:直接的办法在jenkins的job中加入一行认证,docker login --username=xxxx --password=xxxx nexus.xxxx.com

tips:执行完命令,会在当前目录生成一个.credentials里面记录了登录nexus镜像仓库的帐号密码信息

总结

至此,前面的步骤已经完成了jenkins容器内部可以使用docker命令了,也就不需要通过shh插件,从容器跳出到宿主机执行build&push操作命令了,需要执行启动容器的脚本即可!

docker容器化,在宿主机与容器映射的任何东西都是同一个,也就是不管修改了宿主机挂载容器的文件还是容器中修改了挂载的宿主机文件都会同时被修改。

到此这篇关于解决Jenkins集成docker插件问题的一些方法的文章就介绍到这了,更多相关Jenkins集成docker插件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Docker Swarm入门实例详解

    Docker Swarm入门实例详解

    这篇文章主要介绍了Docker Swarm 入门实例详解的相关内容,小编觉得十分不错,在这里给大家分享下,需要的朋友可以参考。
    2017-10-10
  • Docker解决终端无法输入中文的问题

    Docker解决终端无法输入中文的问题

    这篇文章主要介绍了Docker解决终端无法输入中文的问题,帮助大家更好的理解和学习docker的用法,感兴趣的朋友可以了解下
    2020-08-08
  • 解决docker报错:docker:invalid reference format.

    解决docker报错:docker:invalid reference format.

    在导入镜像的时候出现问题:invalid reference format,这里总结下,这篇文章主要给大家介绍了关于解决docker报错:docker:invalid reference format的相关资料,需要的朋友可以参考下
    2024-01-01
  • Docker新手实践及部署NGINX的步骤详解

    Docker新手实践及部署NGINX的步骤详解

    最近工作中有个需求, 用docker去部署nginx的静态服务器。仔细观察这个命题,看似不难,但实际其中的注意点很多,新手很容易搞错,所以下面这篇文章主要给大家介绍了关于Docker新手实践及部署NGINX的步骤,需要的朋友可以参考下。
    2017-11-11
  • 详解使用docker搭建hadoop分布式集群

    详解使用docker搭建hadoop分布式集群

    本篇文章主要介绍了详解使用docker搭建hadoop分布式集群,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • docker部署ES集群的实现

    docker部署ES集群的实现

    本文介绍了如何在Ubuntu20.04.2 LTS环境下通过Docker部署Elasticsearch7.10.1集群,详细步骤包括从Docker镜像仓库拉取Elasticsearch镜像,创建文件映射目录,运行Docker容器,配置Elasticsearch的端口和权限,以及集群的相关设置,感兴趣的可以了解一下
    2024-10-10
  • 详解使用 docker compose 部署 golang 的 Athens 私有代理问题

    详解使用 docker compose 部署 golang 的 Athens 私有代理问题

    这篇文章主要介绍了使用 docker-compose 部署 golang 的 Athens 私有代理,帮助大家快速学习athens 如何构建私有代理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • Docker如何添加自定义网桥

    Docker如何添加自定义网桥

    本篇文章主要介绍了Docker如何添加自定义网桥,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 构建一个简单的CaaS系统

    构建一个简单的CaaS系统

    本文主要介绍如何从零开始构建一个简易的CaaS(Container as a Service)系统。简单易懂,希望有想学习的小伙伴可以关注下
    2016-10-10
  • 快速修改运行中的docker容器端口映射的三种方式

    快速修改运行中的docker容器端口映射的三种方式

    当docker start运行容器后并没有提供一个-p选项或设置,让你修改指定端口映射规则,那么这种情况我们该怎么处理呢?今天教如何修改运行中的docker容器的端口映射,感兴趣的朋友跟随小编一起看看吧
    2023-01-01

最新评论