我的开发者控制台中有两个项目。我拍摄了项目1中其中一个虚拟机的“快照”。我想使用在project-1中创建的快照在project-2中创建一个新VM。目前,快照未显示在选项中。 如何将快照从一个项目导入另一个项目?
答案 0 :(得分:35)
您可以从项目1中的快照创建图像,然后使用项目2从该图像创建实例。
我假设您在两个项目中都拥有编辑权。
你的问题是你有一个快照,想要从项目1中的snap中在项目2中创建一个实例。
如果您仍有可用的快照,请确保它已不再附加到实例。如果它仍然附加到实例,请在删除实例时取消选中"删除引导磁盘"并删除该实例。转到图像并单击从磁盘创建映像,然后从该磁盘创建映像。
如果您没有可用的磁盘,只有快照,请创建一个实例并将启动盘设置为快照并选择快照。然后按照上面的说明通过首先删除实例来创建图像。
现在你在项目1中有了一个图像。你应该看到它列在图像下面。
我不确定原因,但您不会看到项目2中控制台中列出的图像,但您可以使用gcloud使用项目1中的图像在项目2中创建实例。项目1,单击图像并单击"查看REST"将有一个完整的图像URL,类似于:
https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image
使用gcloud使用项目1中的图像在项目2中创建实例:
gcloud config set project <project-id-of-project-2>
gcloud config list
(你应该确认你在项目2中)
gcloud compute instances create <name of instance> --image https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image
显然,您的网址会有所不同。
我刚试过这个并且它有效。如果您需要更多帮助,请告诉我。
答案 1 :(得分:19)
@chrispomeroy发布的答案对我有用,但我能够将其简化一点,因为我需要越来越多地这样做。
假设您在 project-1 中有图片,并且需要在 project-2 中使用该图片创建实例。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^exampletraining\.com$ [NC]
RewriteCond %{REQUEST_URI} !/(lms|moodle)/ [NC]
RewriteRule (.*) lms/$1 [L]
这使您无需担心使用gcloud config set project "project-2"
gcloud compute instances create <name-of-new-instance> \
--image <name-of-your-image-from-project-1> \
--image-project "project-1"
进行任何操作。
编辑:我的答案在这一点上几乎看起来像他,但这些东西的文档就在这里:
答案 2 :(得分:14)
您不需要图像或临时虚拟机,也不必中断源虚拟机。只需在源项目中创建快照:
$ gcloud compute --project p1 disks snapshot the-snapshot src-disk --snapshot-names=the-snapshot
Created [https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot].
然后在目标项目中创建一个磁盘,--source-snapshot
指向&#39;创建&#39;上面返回的网址:
$ gcloud compute --project p2 disks create the-disk \
--source-snapshot https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot
这种用法没有显示在gcloud
docs中,我在@krishna praveen的回答中找到了,但他的解释是不正确的;您不需要删除任何实例,也不需要使用图像。即使源和目标都是引导磁盘,这也可以工作:
$ gcloud compute --project p2 instances create the-vm --disk name=the-disk,boot=yes
如果由于某种原因需要图像,您仍然可以将快照还原到磁盘并使用它来创建没有临时VM的映像。如果临时虚拟机会在启动时自动启动服务,这可能会干扰同一项目网络上其他正在运行的虚拟机,这是首选。
$ gcloud compute images create image-1 --source-disk=src-disk-image --source-disk-zone=zone1
此图像现在可以在另一个项目中使用(如上面的@jiminikiz所示)。
$ gcloud compute --project p2 instances create <name-of-new-instance> --image image-1 \
--image-project p1 --zone=zone
答案 3 :(得分:2)
“chrispomeroy”提供的解决方案工作正常但需要首先使用您的个人Google用户帐户(而不是project2服务帐户)初始化gcloud(因为它是有权访问这两个项目的人):
gcloud init(并选择[2]使用新凭据登录)
然后,您确实可以在项目2上创建VM(从项目1的基础映像):
gcloud计算实例创建testimg --image --image-project(不需要URL) 我今天(2015年11月)测试并且工作正常
答案 4 :(得分:1)
这是通过浏览器的单击解决方案。你需要什么? 你需要有形象。要从磁盘创建映像,必须从任何实例分离磁盘。
如果您在Project1中只有实例,那么有哪些步骤:
从Project1中的实例创建快照。
在Project1中从此快照创建实例。解开“删除启动 实例被删除时的磁盘“。这个实例只用于实例 现在,将被删除
删除刚刚创建的实例
转到“磁盘”菜单,您必须从中看到磁盘 实例
转到“图片”菜单 - &gt; “创建一个图像”。在这里你可以创建图像。如果您没有分离磁盘,则不会有任何磁盘 可在下拉列表中找到。
转到项目2并使用您为Project 1创建的自定义图像创建实例。如何?启动盘 - &gt;改变 - &gt;习惯 图像 - &GT;选择项目1-&gt;您可以在此处查看自定义图片
答案 5 :(得分:0)
AFAIK,这是不可能的。要完成您所描述的内容,最佳方法是使用this tutorial。您可以通过几个步骤创建空白磁盘,将其附加到相关计算机上,然后将启动分区压缩并将其上载到云存储。完成后,在本地下载,切换项目并上传到其他项目。然后,您可以在单击New Instance
答案 6 :(得分:0)
可以使用图像在整个项目中创建实例。现在,如果项目1中有图像,则也可以在项目2中选择该图像。
但是,截至今天,您无法在整个项目中看到磁盘。如果必须将具有关联附加磁盘的VM从Project 1迁移到Project 2,请按照以下步骤进行操作。
使用快照并通过连接gcloud
命令界面在Project 2中创建磁盘。
连接到Project 2,然后执行:
gcloud compute --project "GCPProject2" disks create "myserver-disk1" --size "50" --zone "us-east1-b" --source-snapshot https://www.googleapis.com/compute/v1/projects/GCPProject1/global/snapshots/snapshot-myserver-disk1 --description "DriveName" --type "pd-standard"
上面将在Project2中创建磁盘。然后,您需要通过保留引导磁盘来删除Project1中的实例。
然后,从磁盘myserver-bootdisk
创建映像。
创建映像后,切换到Project 2,然后从映像创建服务器,使用下拉列表并从Project 1中选择映像。
从快照添加已创建的其他磁盘并创建VM。