CannotStartContainerError:API 错误(400):OCI 运行时创建失败:container_linux.go:348:导致启动容器进程

Posted

技术标签:

【中文标题】CannotStartContainerError:API 错误(400):OCI 运行时创建失败:container_linux.go:348:导致启动容器进程【英文标题】:CannotStartContainerError: API error (400): OCI runtime create failed: container_linux.go:348: starting container process caused 【发布时间】:2018-11-06 15:00:04 【问题描述】:

Docker 容器刚刚运行并停止并在 AWS ECS 中引发以下错误。有人可以帮忙吗。

“CannotStartContainerError: API 错误 (400): OCI runtime create failed: container_linux.go:348: 启动容器进程导致”

我已将入口点设置如下。

["sudo service celeryd start && sudo service celerybeat start && service php7.0-fpm start && service rsyslog start && bash"]

它在本地机器上运行良好。

提前致谢。

【问题讨论】:

【参考方案1】:

试试

["sudo service celeryd start && sudo service celerybeat start && service php7.0-fpm start && service rsyslog start && /bin/bash"]

或 ["sudo service celeryd start && sudo service celerybeat start && service php7.0-fpm start && service rsyslog start && /bin/sh"]

【讨论】:

【参考方案2】:

可能有几个原因:

    你的本地机器是arm64设备吗,比如m1 mac等

    您的 Fargate 是否设置为使用引力子? 在上述情况下,查看https://docs.docker.com/buildx/working-with-buildx/ 这将允许您跨 CPU 架构进行构建。

    您是否使用了错误架构的图像? 如果是这样,您将需要更改图像的 FROM 设置位置。

其他一般的东西,你应该使用sleep infinity而不是/bin/sh

不太可能但也有可能:您的容器的某些部分是否使用 golang?一种可能是您在没有禁用 CGO 的情况下使用 golang 构建了您的应用程序。

还有一般 docker 建议:您不应该将 PHP 和 celery 放在同一个容器中,通常最好的做法是每个容器有一个主应用程序并使用 TCP 使用容器间通信。

【讨论】:

以上是关于CannotStartContainerError:API 错误(400):OCI 运行时创建失败:container_linux.go:348:导致启动容器进程的主要内容,如果未能解决你的问题,请参考以下文章