Docker:守护程序错误响应:OCI运行时创建失败:container_linux.go:296。

32

我正在尝试使用Express运行一个简单的Node应用程序,但是我遇到了这个错误:

输入图像描述

这是我的工作目录:

输入图像描述

我运行了以下命令将我的当前源代码目录挂载到节点容器内的/var/www并运行node npm start来启动应用程序; 但是我得到了上面的错误,不知道该怎么办:

docker run -p 8085:3000 -v /home/joel/workspace/plural_docker_webdev:/var/www node -w "/var/www" node npm start

我遇到了这个错误:

docker: Error response from daemon: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"-w\": executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled
2个回答

33

Docker告诉您命令发生了错误。它试图使用命令-w运行node镜像。由于-w不是命令,因此会抛出此错误。

这是因为您在可能不打算写入node的地方写了它。

您的命令被解释为:

docker run -p [port_info] -v [volume_info] node [command]

您可以像这样重新编写您的命令,它应该可以正常工作:

docker run -p 8085:3000 -v /home/joel/workspace/plural_docker_webdev:/var/www -w "/var/www" node npm start

谢谢Ryan,但这不是我在问题中提到的相同命令吗?你的命令与我的有何不同?我在哪里犯了错误? - pelican
你把node写了两次。一次在第78个字符处,另一次在第97个字符处。请删除第一个。 - Ryan Rapp
第一个节点是镜像名称,第二个节点是docker将运行的命令,即node npm start; 我的问题在于卷挂载,因为node无法找到package.json文件,所以我只需运行相同的命令,但只需要添加/Express_website/以完全路径给出package.json,现在它可以正常工作了,再次感谢,新命令将是:docker run -p 8085:3000 -v /home/joel/workspace/plural_docker_webdev/Express_website/:/var/www -w "/var/www npm start。请注意,现在的卷挂载包括/Express_website以指向package.json。谢谢Ryan。 - pelican
3
可能这是一个额外的问题。但是,您打算传递给 docker run 的任何参数都需要出现在 [container_name] 参数之前。在您发布的命令中,-w "/var/www" 出现在 node 之后。这就是为什么 Docker 尝试运行 -w 命令并向您解释错误的原因。另外,node npm start 不是一个命令。它只是 npm start。您可以在控制台中验证这一点。 - Ryan Rapp
10
我通过在命令后面加上“[container_name]”解决了我的问题。感谢@RyanRapp。 - Sajad
显示剩余2条评论

2

我遇到了相同的问题。我的问题是我们没有给它足够的内存。按照建议的最低 2GB 内存去做,结果发现其他资源消耗了大部分内存。我增加到了 4GB,重新启动后,现在它正常工作。


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