我有一个随应用程序一起安装的Google Cloud VM。安装步骤完成,然后我:
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映像)?
谢谢!
答案 0 :(得分:2)
如果您知道VM上所有已安装的内容(以及所有命令),请在Dokerfile中执行相同的操作。用作基础映像,与当前VM的操作系统版本相同。执行一些测试,它应该很快就等效。
如果您的VM应用程序中有全状态文件,则情况会有些复杂,您必须在容器中装入磁盘,并更新应用程序的配置以写入正确的装入文件夹中。它更“复杂”,但互联网上有很多例子!
答案 1 :(得分:1)
否,没有工具就无法从虚拟机映像中提取应用程序并在容器中重新创建,这是不可能的。据我所知,不存在通用工具。
容器映像和虚拟机映像之间存在很大差异。容器映像没有操作系统,虚拟机映像是完整的操作系统和设备数据。两者在概念上相似,但在软件和硬件级别的实现方式却极为不同。