【问题标题】:Google Cloud VM Image to docker image谷歌云虚拟机镜像到 docker 镜像
【发布时间】:2020-02-16 03:17:00
【问题描述】:

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

  1. 关闭虚拟机实例。
  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 private repositories”)的情况下进行这种转换(GCP VM Image -> Docker image)?

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-08-07
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        • 2020-11-25
        • 1970-01-01
        • 2015-02-05
        • 2013-04-09
        • 1970-01-01
        相关资源
        最近更新 更多