开发者社区> 问答> 正文

jenkins docker使用问题libltdl.so.7: cannot r?400报错

环境:

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可以正常使用。

 

这个问题该如何解决?

展开
收起
爱吃鱼的程序员 2020-06-06 14:47:41 1536 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>问题的原因是宿主机没有jenkins镜像需要的libltdl,所以映射也是没有用的。</p>
    

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

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

                        <pre><code>-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7</code></pre>
    
    2020-06-06 14:47:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
像搭积木一样玩转Docker的持续交付 立即下载
我的Docker:Docker插件机制详解 立即下载
微博Docker Cloud Platform(DCP) 实现分钟级服务成倍扩容 立即下载