【问题标题】:How to troubleshoot "OCI runtime create failed: container_linux.go:349"如何解决“OCI 运行时创建失败:container_linux.go:349”
【发布时间】:2020-06-16 01:43:27
【问题描述】:

我正在对 Flask 应用程序进行 dockerizing,在启动项目时我突然收到此错误:

ERROR: for flask  Cannot start service users: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"/usr/src/app/entrypoint.sh\": stat /usr/src/app/entrypoint.sh: no such file or directory": unknown

我不知道为什么它抱怨entrypoint.sh 不存在,因为它与 Dockefile 位于同一目录中,直到现在我还没有遇到此问题。 p>

下面是我的 Dockerfile:

FROM python:3.8.2-slim

RUN apt-get update && \
    apt-get -y install netcat && \
    apt-get clean

WORKDIR /usr/src/app

COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt

COPY ./entrypoint.sh /usr/src/app/entrypoint.sh
RUN chmod +x /usr/src/app/entrypoint.sh

COPY . /usr/src/app

CMD ["/usr/src/app/entrypoint.sh"]

对此的任何见解都非常感谢。

【问题讨论】:

  • 您是否遵循了网站上类似问题的任何建议?
  • 我确实查找了错误 349,因为这大大缩小了范围,但什么也没出现。
  • 这里是该站点上错误的搜索结果的链接,包括您在问题中采取的调试步骤:stackoverflow.com/…
  • 行号不重要,会随着docker build的不同而变化。
  • 哦,我还以为是错误号。我的错。

标签: docker flask


【解决方案1】:

在几分钟的搜索中没有找到确切的重复项之一,网站上有很多类似的问题。要调试这个:

  1. 容器内是否存在可执行文件?有时人们会做错事,例如它们在成为 docker 试图运行的命令的图像名称之后包含 args。这里不是这样。

  2. 如果 docker 试图运行看起来像 json 字符串的内容,那么 CMD/ENTRYPOINT 的 json 语法中通常会出现语法错误。检查缺少的逗号、单引号而不是双引号。这里也不是这样。

  3. 通常存在路径问题,命令位于容器内的不同路径中。有时,卷会覆盖该路径处的图像内容。没有你的运行命令,这不能排除。

  4. 如果它是存在于容器中的 shell 脚本,请检查该 shell 脚本的第一行。例如。 #!/bin/bash。该路径上的该命令必须存在于容器内。如果脚本是在 linux 主机之外修改的,请确保换行符是 linux 格式。 Windows 换行将导致文件名末尾有一个额外的字符。这是您最可能遇到的问题。

  5. 如果命令是存在于容器内的二进制文件,则通常是由于缺少链接库造成的。在二进制文件上使用ldd 来查看链接的库并验证容器内是否存在每个文件名。这经常出现在针对 libc 编译然后在使用 musl 的 Alpine 内部运行的应用程序中。修复方法是在 Alpine 内部编译,或者静态编译二进制文件。这不太可能是您使用 shell 脚本的问题。

我在FAQ presentation 中介绍了这些内容,在演讲者的笔记中有一些提示。

【讨论】:

  • 现在我刚刚从自己那里找到了两个类似的答案:stackoverflow.com/a/55182591/596285stackoverflow.com/a/51770158/596285
  • 感谢您提供的所有有用信息。我注意到只有在 AWS 集群上运行/构建容器时才会出现此错误。在本地它运行良好,但 AWS 上发生了一些引发此错误的事情。通常我会通过 SSH 连接到容器并运行诊断程序,但容器甚至不会启动,所以我不会更深入地了解容器中发生的情况。
猜你喜欢
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 2020-10-27
  • 2021-02-20
  • 1970-01-01
  • 2021-06-08
  • 2020-01-03
  • 2021-06-03
相关资源
最近更新 更多