1. 問題: docker alpine鏡像中遇到 sh: xxx: not found
例如: 在容器內/app/目錄下放置了可執行文件abc,啟動時提示not found /app/startup.sh: line 5: ./abc : not found
2. 原因
由於alpine鏡像使用的是musl libc而不是gnu libc,/lib64/ 是不存在的。但他們是兼容的,可以創建個軟連接過去試試!
這種情況是因為動態鏈接庫位置錯誤導致的,alpine鏡像使用的是musl libc而不是gun libc。因而動態鏈接庫的位置不一致 。
而一般二進制文件在linux系統下編譯,動態鏈接庫是到/lib64目錄下的,在alpine鏡像內無/lib64目錄 。
3.解決方法:創建lib64的軟連接
在Dockerfile基礎鏡像內增加執行:
RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2