Docker 啟動alpine鏡像中可執行程序文件遇到 not found


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM