Compute Engine


An image contains a boot loader, an operating system and a root file system that is necessary for starting an instance. Compute Engine offers publicly-available images of certain operating systems that you can use, or you can create a custom image. A custom image is an image created from one of your virtual machine instances that contains your specific instance configurations. If you needed to create many identical instances, you should create and use a custom image. When you create an instance, you must always specify an image to use for that instance.

For advanced users, you can also build your own image.


Accessing images

Images belong to a project and can be accessible by that project as a private image or accessible by any project as a public image. The project owner controls how accessible the image is. Depending on the image, some images cost money to use, while others are available free of charge. For example, Google-provided images of Red Hat Enterprise Linux (RHEL) and SUSE cost an additional fee to use. Google-provided images also live in their respective projects; Debian images belong to the debian-cloud project, CentOS images belong to the centos-cloud project, and so on.

When you create your own custom image, it is considered a private image and belongs to your own project.

Public images

Public images are visible by everybody and can be used by any Compute Engine project. Public images are provided and maintained by Google, open-source communities, and third-party vendors only. These images contain preloaded operating systems that can run on Compute Engine instances.

Currently, you cannot create public images. If you want to share an image, you should instead grant access to where the original source image file is stored and then direct others to import the image to their own projects.

Private images

By default, any custom images you create are private images that are only accessible by the project where the image originated. You can create a new custom image from an existing root persistent disk or you can build a new private image from scratch.

List all images

You can see a list of all images available to your project using gcloud compute with the images list command.

$ gcloud compute images list

This lists both private and public images that are available to your project. To differentiate between the images, refer to the Project column in the gcloud compute output, which indicates which project each image belongs to.