首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在jenkins docker容器中使用docker命令报错,容器内外环境不一致导致?

在jenkins docker容器中使用docker命令报错,容器内外环境不一致导致?

提问于 2022-08-21 15:24:02
回答 1关注 1查看 977

我使用ubuntu(22.04.1)安装了docker(20.10.17),在ubuntu系统下docker命令能正常使用。

我使用docker-compose启动了jenkins的docker容器(image:jenkins/jenkins:lts),并挂载了

/usr/bin/docker:/usr/bin/docker及/var/run/docker.sock:/var/run/docker.sock。

docker-compose.yml
docker-compose.yml

我想使用jenkins执行shell脚本使用docker完成对项目的image构建,但是在jenkins容器内使用docker命令(如:docker --version)会出现以下错误:

docker: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by docker)

docker: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by docker)

jenkins容器内执行docker报错
jenkins容器内执行docker报错

原因分析:

在ubuntu执行ldd --version得到的结果是ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35,

而在jenkins容器内执行ldd --version得到结果是ldd (Debian GLIBC 2.31-13+deb11u3) 2.31

容器内外ldd环境不一致
容器内外ldd环境不一致

似乎容器内的GLIBC版本(2.31)不足以支撑docker命令的执行。

但是我理解的是,容器内的docker命令应该实际去调用容器外的docker命令,使用ubuntu的环境(GLIBC2.35及以下)去完成命令的执行。

ubuntu环境GLIBC版本
ubuntu环境GLIBC版本

我对docker的机制还不够了解,希望有大佬能够帮忙指点迷津。

尝试过的解决方法:

我尝试将ubuntu的/lib/x86_64-linux-gnu/libc.so.6文件挂载进容器内部,并且修改容器内默认的libc.so.6文件名(

libc.so.6_close),希望能使用ubuntu的环境,但在容器内执行docker命令会直接终止(Segmentation fault (core dumped))。目前,想到的可能是去安装一个旧版本的docker,来降低对GLIBC版本的要求。不知,有没有更好的方法来解决这个问题,希望大佬们多多指点,感谢~

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档