Docker:错误 500 - 无法启动容器

Posted

技术标签:

【中文标题】Docker:错误 500 - 无法启动容器【英文标题】:Docker: error 500 - failed to start container 【发布时间】:2018-08-08 03:24:00 【问题描述】:

我在运行java -jar shinyproxy-1.0.2.jar 并访问我的应用程序后遇到了这个问题:

Error
Status code: 500
Message: Failed to start container: Request error: POST http://localhost:2375/containers/create: 400, body: “message”:“invalid reference format”
Stack Trace:
eu.openanalytics.ShinyProxyException: Failed to start container: Request error: POST

来自shinyproxy.io 的帮助:https://www.shinyproxy.io/troubleshooting/#failed-to-start-container

我检查了防火墙,它被禁用了。

我还检查了我的 docker.service 文件,一切似乎都井然有序:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target docker.socket firewalld.service
Wants=network-online.target
Requires=docker.socket
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// -D -H tcp://127.0.0.1:2375
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

我使用的是 Ubuntu 16.04。这里有什么帮助吗?

【问题讨论】:

查看失败的容器日志和 Docker 守护进程的日志文件以获取线索。 是的...... Spring boot 日志在这方面并没有真正的帮助 【参考方案1】:

OP 在这里回答。

我设法通过卸载所有以前的 docker 安装解决了这个问题,并按照Digital Ocean's guide 为 Ubuntu 16.04 安装 Docker。

完成此操作后,我重新配置了我的Dockerfile 以包含来自this post 的代码,以及我的application.ymldocker-cmd 行更改为docker-cmd: ["/usr/bin/shiny-server.sh"]

当然,我重新调整了我的图像,因为我还需要一些其他库和外部依赖项才能使其工作,但本质上,下载闪亮服务器文件的行是让我继续前进的那些行,让我使用java -jar shinyproxy-1.0.2.jar 启动应用程序以正确启动 Spring Boot 应用程序。

另外,为了调试在容器内运行的闪亮应用程序(当然,并非一切正常),我将Dockerfile 中的CMD 行更改为CMD ["R", "-e", "shiny::runApp('/srv/shiny-server')"],以及之前的docker-cmd 行给docker-cmd: ["R", "-e", "shiny::runApp('/srv/shiny-server/')"]

【讨论】:

以上是关于Docker:错误 500 - 无法启动容器的主要内容,如果未能解决你的问题,请参考以下文章

来自守护进程的 Docker 错误响应:无法启动容器

解决docker容器因报错无法启动的问题,检查修复容器错误并重启

Docker启动后开启或关闭自启容器

Docker错误:无法为服务Web创建容器:无效模式

开机自启docker后 开启或关闭自启容器

无法运行 OpenFOAM docker 镜像