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.
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 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.
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
$ 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.