启动 docker 图像所花费的时间在哪里?

Where is the time spent starting a docker image?

我已经 运行 通过 powershell 执行了一些命令,编制了一份(大约)平均时间列表,但我不明白时间花在了哪里。

Measure-Command {docker run} : ~ 50 毫秒

Measure-Command {node -v} : ~ 50 毫秒

Measure-Command {docker run node:latest}:~600 毫秒。

我更希望 docker run node:latest 命令为 100-200 毫秒。

我怀疑额外的时间花在了检查更新的 'latest' 文件上,但我对这个恶魔的了解还不够多,无法确定。

如何获得我期望的 100-200 毫秒加载时间?

docker run 没有进一步的参数打印帮助文本并退出。

node -v 没有进一步的参数打印版本号并退出。

docker run node:latest 必须做很多事情,包括但不限于:

  • node:latest 标签解析为图像 ID
  • 加载那个图像文件系统层
    • 在这种情况下,似乎没有其他层,但在其他情况下,可能会有一连串其他文件系统层要加载并组成最终文件系统视图
  • 创建容器
  • 为容器的 write/CoW 操作创建 read/write fs 层
  • 运行容器
  • 在容器中找到node程序并执行
  • 在这种情况下,它只是退出,因为没有其他事情可做
  • 退出时清理操作