以下方法來源于AI,個人僅驗證了第三條便成功執行
1. 鏡像與宿主機架構不匹配
比如:
你是 x86_64 的機器,但鏡像是 ARM64 的(或反之)。在 PC 上拉了樹莓派用的鏡像。
查看鏡像架構
docker inspect <image_name> | grep Architecture
查看宿主機架構
uname -m
如果不一致,可以用 --platform 參數強制指定:
docker run --platform linux/amd64 -it <image_name> /bin/bash
# 或
docker run --platform linux/arm64 -it <image_name> /bin/bash
前提是 Docker Desktop 或宿主機支持 QEMU 模擬。
2.鏡像里根本沒有 /bin/bash
有些鏡像(比如 alpine)默認沒有 Bash,只有 /bin/sh 或 /bin/ash。
解決方法:用 /bin/sh 進入
docker run -it <image_name> /bin/sh
如果需要 Bash,先裝:
apk add --no-cache bash # Alpine
apt-get update && apt-get install -y bash # Debian/Ubuntu
3. ENTRYPOINT 或 CMD 導致 /bin/bash 被當作數據執行
如果鏡像的 ENTRYPOINT 是一個二進制文件,而你又在 docker run 時傳了 /bin/bash,可能被錯誤解釋。
解決方法:加–entrypoint
docker inspect <image_name> | grep Entrypoint
docker run -it --entrypoint /bin/bash <image_name>
4. 鏡像文件損壞
下載過程不完整,也可能導致 /bin/bash 不是有效可執行文件。
解決方法:
docker pull --platform <平臺> <image_name> --disable-content-trust
我自己運行第三條便成功執行: