node.js - 从 Dockerfile 构建的 Docker 无限期挂起,偶尔会因错误“无法启动服务实用程序 VM”而崩溃
问题描述
我目前正在使用 Docker Desktop for Windows 并按照本教程使用 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。我什至完全重置并重新开始了教程,但我仍然遇到同样的问题,它无限期地挂起。
解决方案
好吧,你复制一些文件两次。我不会那样做。
因此,对于您的最小更改,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
目录在构建映像时也不会被复制(节省时间)。
希望这可以帮助。
推荐阅读
- ruby - 为什么从红宝石中的浮点数(以毫秒精度)转换为时间会导致红宝石中的精度损失不一致?
- javascript - 如何在成功响应不为空之前调用相同的ajax
- ios - 调整视图的大小使其他视图在 UITableViewCell 中反弹
- json - 如何使用 Codable 在 Swift 中使用动态文件名解析 JSON
- android - 支持的最低 Android 版本 Cordova 9
- version - 在哪里找到 Azure DevOps Server 的数字版本号(安装前)?
- python - 在 gitlab ci 管道中,如何使用 python 连接到 redis 服务?
- r - 我怎样才能用尽函数的所有参数组合并将它们的结果收集在一个整洁的表中?
- javascript - 在不重新加载页面的情况下刷新 div 中的 php 函数?
- python - 删除列表中的特定连续重复项