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:导致启动容器进程的主要内容,如果未能解决你的问题,请参考以下文章