从Dockerfile构建的Docker会无限期挂起,并偶尔崩溃,并显示错误``无法启动服务实用程序VM''

时间:2019-06-21 17:36:23

标签: node.js docker npm visual-studio-code dockerfile

我当前正在使用Windows的Docker桌面,并按照本教程使用Docker和VSCode(https://scotch.io/tutorials/docker-and-visual-studio-code)进行操作,并且在尝试构建映像时,守护程序能够完成Dockerfile的第一步,但无限期地挂在第二步。有时,但非常罕见,经过一段不确定的时间后,它会出错并给我这个错误

failed to start service utility VM (createreadwrite): CreateComputeSystem 97cb9905dbf6933f563d0337f8321c8cb71e543a242cddb0cb09dbbdbb68b006_svm: The operation could not be started because a required feature is not installed.
(extra info: {"SystemType":"container","Name":"97cb9905dbf6933f563d0337f8321c8cb71e543a242cddb0cb09dbbdbb68b006_svm","Layers":null,"HvPartition":true,"HvRuntime":{"ImagePath":"C:\\Program Files\\Linux Containers","LinuxInitrdFile":"initrd.img","LinuxKernelFile":"kernel"},"ContainerType":"linux","TerminateOnLastHandleClosed":true})

我确保在我的机器上启用了虚拟化,然后卸载并重新安装了Docker,卸载了Docker并删除了与之相关的所有文件,然后再重新安装,并确保启用了实验性功能。这些是我从各种论坛中找到的修补程序,同时试图找到其他遇到相同问题的人。

这是我要构建的Dockerfile。尽管本教程仍然有可能遗漏了某些内容(在FROM行中的版本号之外),但我对本教程进行了仔细检查,以确保它是正确的。

FROM node:10.13-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production --silent && mv node_modules ../
COPY . .
EXPOSE 3000
CMD npm start

我希望在按照教程T进行操作后,图像能够正确构建。我什至已完全重置并重新开始了教程,但仍然遇到同样的问题,它无限期地挂起。

1 个答案:

答案 0 :(得分:0)

好吧,您将某些文件复制了两次。我不会那样的。
因此,对于您的Dockerfile进行的最小更改,我会尝试:

FROM node:10.13-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY . .
RUN npm install --production --silent && mv node_modules ../
EXPOSE 3000
CMD npm start

如果确实需要&& mv node_modules ../部分,我也会考虑。
如果您尚未这样做,建议您在.dockerignore旁边写一个Dockerfile文件,其最小内容为:

/node_modules

以免在构建映像时也不会复制本地node_modules目录(节省时间)。

希望这会有所帮助。