Google Cloud VM映像到Docker映像

时间:2019-10-19 09:56:30

标签: docker google-cloud-platform google-kubernetes-engine google-cloud-build

我有一个随应用程序一起安装的Google Cloud VM。安装步骤完成,然后我:

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

我现在的愿望是使用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私有存储库”)的情况下进行此转换(GCP VM映像-> Docker映像)?

谢谢!

2 个答案:

答案 0 :(得分:2)

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

如果您的VM应用程序中有全状态文件,则情况会有些复杂,您必须在容器中装入磁盘,并更新应用程序的配置以写入正确的装入文件夹中。它更“复杂”,但互联网上有很多例子!

答案 1 :(得分:1)

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

容器映像和虚拟机映像之间存在很大差异。容器映像没有操作系统,虚拟机映像是完整的操作系统和设备数据。两者在概念上相似,但在软件和硬件级别的实现方式却极为不同。