jenkins docker使用问题libltdl.so.7: cannot read file data: Error 21

itwriter 发布于 2018/10/13 20:56
阅读 690
收藏 0

环境:

centos7

docker镜像的方式安装jenkins,然后在jenkins的pipeline中调用docker命令。

jenkins 安装命令:docker run -it --rm  --name myjenkins -p 8083:8080 -p 50000:50000  -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v ~:/var/jenkins_home jenkins/jenkins

 

docker脚本:

stage('Build') {
    docker.image('maven:3.3.3-jdk8').inside('-v ~/.m2/repo:/m2repo') {
        sh 'mvn -Dmaven.repo.local=/m2repo clean package'
    }
   }

 

错误现象:

Running shell script
+ docker pull maven:3.3.3-jdk8
docker: error while loading shared libraries: /usr/lib/x86_64-linux-gnu/libltdl.so.7: cannot read file data: Error 21

从现象来看,是因为docker需要/usr/lib/x86_64-linux-gnu/libltdl.so.7中的某些文件,但

用ls可以看到/usr/lib/x86_64-linux-gnu/libltdl.so.7是空文件夹,所以报错。但docker本身应该是不依赖libltdl.so.7的,因为宿主机的docker可以正常使用。

 

这个问题该如何解决?

加载中
0
itwriter
itwriter

问题的原因是宿主机没有jenkins镜像需要的libltdl,所以映射也是没有用的。

最后我只能根据网上的文章,制作jenkins镜像,在自定义景象中安装需要的类库。虽然不喜欢,觉得造成了镜像污染,但也没有更好的办法。

https://www.cnblogs.com/leolztang/p/6934694.html

0
w
ws_lf
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
返回顶部
顶部