我使用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。
我想使用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)
原因分析:
在ubuntu执行ldd --version得到的结果是ldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35,
而在jenkins容器内执行ldd --version得到结果是ldd (Debian GLIBC 2.31-13+deb11u3) 2.31
似乎容器内的GLIBC版本(2.31)不足以支撑docker命令的执行。
但是我理解的是,容器内的docker命令应该实际去调用容器外的docker命令,使用ubuntu的环境(GLIBC2.35及以下)去完成命令的执行。
我对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版本的要求。不知,有没有更好的方法来解决这个问题,希望大佬们多多指点,感谢~
相似问题