docker - 在 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 上找到的所有内容都是关于Entrypoint
etc 的,但我的问题显然在我到达入口点之前就已经存在。
在 CentOS 7 主机上,肯定有 /bin/sh。/bin/sh foo.sh
我可以通过运行命令毫无问题地执行 Shell 脚本 foo.sh。
解决方案
在同一个问题搞砸了几个小时后离开这里:
我的问题是图像损坏。消失是非常顽固的:)
所以尝试使用docker system prune -a
,重新启动 docker 并再次构建。
请注意,这会删除所有无法撤消的图像和容器。有关更多信息,请参阅:docker system prune
推荐阅读
- ios - FlatList 渲染导致关键窗口的子视图被移除
- sql - 我想在运行时使用动态 sql 创建一个表并在同一个表中插入一行
- r - 使用 sparklyr 的 xgboost 函数时的 ft_one_hot_endcoder 或 ft_one_hot_encoder_estimator?
- sql - 将 Java sql 查询从 UNION 更新为 JOIN
- amazon-web-services - 我想将“aws-iot-device-sdk”添加到我的项目中
- javascript - Nest.js:如何覆盖导入模块中的提供程序?
- google-apps-script - 如何将目标文件夹名称与特定的单一来源文件夹名称进行比较?
- c# - 为什么我的 GUI 在从网络流中读取之前冻结,但可以正常使用 - MessageBox.Sow(""); 在阅读之前?
- typescript - TypeScript:将“in”运算符定义为函数
- ngrx-effects - 效果 ngrx v8 中的链式动作