以下方法来源于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

我自己运行第三条便成功执行:
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐