runc运行失败:无法启动容器进程:exec:“/bin/sh”:stat /bin/sh:没有那个文件或目录。

3

嗨,我正在使用 Docker 创建一个镜像,以下是 Dockerfile 中的命令

FROM node

WORKDIR /app

COPY . /app

RUN npm install

EXPOSE 80

CMD ["node", "server.js"]

当我运行命令Docker build .时,它会返回以下响应。
[+] Building 2.0s (8/8) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                                                       0.0s
 => => transferring dockerfile: 138B                                                                                                                                                                       0.0s 
 => [internal] load .dockerignore                                                                                                                                                                          0.0s
 => => transferring context: 2B                                                                                                                                                                            0.0s 
 => [internal] load metadata for docker.io/library/node:latest                                                                                                                                             1.0s
 => [internal] load build context                                                                                                                                                                          0.0s
 => => transferring context: 295B                                                                                                                                                                          0.0s 
 => [1/4] FROM docker.io/library/node@sha256:eee19816ad7ae65dbcac037629c355fa4b369d163a660bc9718df8f945e79eeb                                                                                              0.0s 
 => CACHED [2/4] WORKDIR /app                                                                                                                                                                              0.0s 
 => CACHED [3/4] COPY . /app                                                                                                                                                                               0.0s 
 => ERROR [4/4] RUN npm install                                                                                                                                                                            0.7s
------
** > [4/4] RUN npm install:
#8 0.673 runc run failed: unable to start container process: exec: "/bin/sh": stat /bin/sh: no such file or directory**

有人可以指导一下吗?

我原本期望这个图片能够被建立。


我怀疑问题出在 package.json 文件上。Docker 找不到它。 - alv2017
你能展示一下文件夹的架构吗?(比如 Dockerfile、package.json 等在哪里) - pgossa
您还应该仔细检查一下是否在本地覆盖了 node 映像,请尝试手动运行 docker pull node 然后进行重新构建。我曾经在 Compose 设置中看到过这种情况,即 build: 自定义映像,但同时不正确地包括 image:,命名基础映像,这会导致本地覆盖基础映像。 - David Maze
文件夹结构如下:模式 最后修改时间 大小 名称
d----- 10/7/2020 12:09 PM public -a---- 10/7/2020 12:10 PM 6148 .DS_Store -a---- 1/11/2023 6:26 PM 101 Dockerfile -a---- 10/7/2020 12:09 PM 255 package.json -a---- 10/7/2020 12:09 PM 939 server.js
- Hammad Ahmad
Docker 刚刚更新到了 Docker version 23.0.0, build e92dd87,但现在无法构建任何东西。运行任何命令都会出现 runc run failed: unable to start container process: exec: "/bin/sh": stat /bin/sh: no such file or directory 的错误提示。我怀疑这是由于更新引起的问题。 - kjpc-tech
我曾经遇到过同样的问题,在Ubuntu上按照https://docs.docker.com/engine/install/ubuntu/#uninstall-docker-engine的说明进行卸载(包括现有的镜像、容器和卷),问题得以解决。 - Ivan Ternovtsiy
2个回答

1

我在 CI/CD 环境中遇到了同样的问题,与 /var/lib/docker 目录有关。

因此,您可以尝试以下步骤(这样做会暂时丢失主机中的所有 Docker 层和镜像,但如果不行可以还原操作)

  • 停止 Docker 服务
  • sudo mv /var/lib/docker /var/lib/_docker
  • 重新启动 Docker 服务(如果需要,sudo mkdir /var/lib/docker

0

在构建Python程序镜像时,我遇到了这个错误,并通过卸载基础镜像成功解决了它,对我来说基础镜像是python:3.8-alpine,使用命令sudo docker rmi the_image_id

sudo docker images 应该显示可用的镜像及其属性,您可以从中获取镜像ID并将其添加到上面的脚本中

you can as well try to use some other base image version/tags 
and see if the command runs fine -- this was my first attempt
while debugging

在后续的构建尝试中,该命令成功运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接