Google 云 VM 映像到 docker 映像

Google Cloud VM Image to docker image

我有一个与我的应用程序一起安装的 Google 云 VM。安装步骤完成,本人:

  1. 关闭虚拟机实例。
  2. 将磁盘导出到名为 MY_CUSTOM_IMAGE_1
  3. 的磁盘映像

我现在的愿望是使用 MY_CUSTOM_IMAGE_1 作为我的 docker 图像构建的起始图像。为了构建图像,我正在使用 Google Cloud Build。

我的 docker 文件应该如下所示:

FROM MY_CUSTOM_IMAGE_1 AS BUILD_ENV
...

当我尝试使用此图像时出现构建错误:

ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: exit status 1
ERROR
pull access denied for MY_CUSTOM_IMAGE_1, repository does not exist or may require 'docker login'
Step 1/43 : FROM MY_CUSTOM_IMAGE_1 AS BUILD_ENV

原因是 VM 映像与 Docker 映像不同。

是否可以在没有外部工具(GCP 外部,如 "docker private repositories")的情况下进行此转换(GCP VM 图像 -> Docker 图像)?

谢谢!

不,如果没有从虚拟机映像中提取应用程序并在容器中重新创建的工具,这是不可能的。据我所知,不存在通用工具。

容器镜像和虚拟机镜像有很大区别。容器镜像没有操作系统,虚拟机镜像是完整的操作系统和设备数据。两者在概念上相似,但在软件和硬件层面的实现方式却截然不同。

如果您知道 VM 上安装的所有东西(以及所有命令),请在 Dokerfile 中执行相同的操作。用作基础映像,与当前 VM 的 OS 版本相同。执行一些测试,它应该很快等效。

如果您的 VM 应用程序中有有状态文件,它会稍微复杂一些,您必须在容器中安装磁盘并更新应用程序的配置以写入正确的安装文件夹。它更多 "complex" 但互联网上有大量示例!