About debugging the issue “glibc version not found”
Pre
Recently, I wanna build an image from the previous Dockerfile (Which absolutely works fine before).
However, it stuck in libc version not found when I ran it.
Dockerfile
Here is my Dockerfile
| |
1st issue
Upon running the image, it throws:
/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.29 not found(required by ffi-napi)
I realized that maybe the problem is in the second node:18 image, so I changed it to node:16, but the problem still exists; I tried node:20
image again, still again.
After a lot of searching, I found that the node:18 image was upgraded from the default system version bullseye to bookworm, so I tried to use
the node:18-bullseye image, and the problem was solved.
Then, I dived into the second issue. ><…
2nd issue
After I fixed the 1st issue, it threw another error:
/lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found(required by my golang dynamic lib)
Due to the experience of the first issue, after confirming that the golang image has this version golang:1.20-bullseye, I immediately tried
the golang:1.20-bullseye image, but the problem was not solved as I expected. Sad.
After a long time of thinking, I suddenly realized that maybe the system version(Ubuntu 22) of my docker is too high?
I immediately tried to use my Ubuntu 18.04 system version to run, and the problem was solved! Wonderful!!!
BTW, Changing golang:1.20 to golang:1.20-bullseye is necessary, if not, it still
throws /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found
Fixed Dockerfile
| |
Conclusion
- When using FROM in Dockerfile, not only need to specify the software version, but also need to specify the system version
- The host system version of Docker is not easy to control, just don’t be too high or too low