首页 > 解决方案 > 在 Ubuntu 上工作时在 CentOS 上构建 docker 映像导致“stat /bin/sh:没有这样的文件或目录”

问题描述

我有一个在 Ubuntu 18.04 上工作(构建和运行)的 Dockerfile。现在,我必须在我的权限非常有限的 CentOS 7 机器上构建它。

我的 dockerfile 看起来像这样:

FROM ubuntu:18.04

RUN apt-get update

ENTRYPOINT echo "Hello world"

当我尝试通过构建docker build -t foo .(在带有 Dockerfile 的目录中)时,我会得到

将构建上下文发送到 Docker 守护进程 2.048 kB

步骤 1/3:来自 ubuntu:18.04

---> 20bb25d32758

第 2/3 步:运行 apt-get 更新

---> 在 dcb3efe30efb 中运行

container_linux.go:247: 启动容器进程导致 "exec:\"/bin/sh\": stat /bin/sh: no such file or directory"

oci 运行时错误:container_linux.go:247:启动容器进程导致“exec:\”/bin/sh\“:stat /bin/sh:没有这样的文件或目录”

另见截图 在此处输入图像描述

我在 Google 上找到的所有内容都是关于Entrypointetc 的,但我的问题显然在我到达入口点之前就已经存在。

在 CentOS 7 主机上,肯定有 /bin/sh。/bin/sh foo.sh我可以通过运行命令毫无问题地执行 Shell 脚本 foo.sh。

标签: dockercentosdockerfile

解决方案


在同一个问题搞砸了几个小时后离开这里:

我的问题是图像损坏。消失是非常顽固的:)

所以尝试使用docker system prune -a,重新启动 docker 并再次构建。

请注意,这会删除所有无法撤消的图像和容器。有关更多信息,请参阅:docker system prune


推荐阅读