# Images

An image is what an instance boots from. Learn the difference between platform-provided and your own images, and what each image field means.

An image is the template an instance boots from: the operating system and whatever else was built into it. You choose one at launch. The launch copies the image onto the new instance’s root disk, and from then on the instance doesn’t depend on the image.

The following table shows where images come from and how they’re used.

| From | Step | To |
| --- | --- | --- |
| Image family | resolves to | Platform-provided image |
| Volume | snapshot | Protected snapshot |
| Protected snapshot | `create-image` | Your image |
| Platform-provided image | launch | Instance |
| Your image | launch | Instance |

## Key concepts [#key-concepts]

| Concept | Meaning |
| --- | --- |
| Platform-provided image | An image the platform publishes, such as a Debian or Ubuntu base image. Any project can launch from one. It lists alongside your own images in `list-images`. |
| Your own image | An image you create from a protected snapshot of one of your volumes. It belongs to the project you create it in. See [Create an image](/docs/compute/images/create). |
| Image family | A stable name for a line of platform-provided images that resolves to the current one. See [Image families](/docs/compute/images/image-families). |
| Default user | The account an instance launched from the image logs in as. Every image has a `defaultUser`. The platform-provided images use `cloud`. See [Guest environment](/docs/compute/instances/guest-environment). |

<Callout type="warning" title="Keep the snapshot protected">

Your own image depends on the snapshot it was built from for its whole life. The platform doesn’t check whether an image uses the snapshot. Once you unprotect or delete that snapshot, launching instances from the image is refused, although the image still reads `AVAILABLE`. See [Delete a snapshot](/docs/storage/snapshots/delete).

</Callout>

## Image fields [#image-fields]

Three image fields are typed enums in the API. Each has exactly one value. Handle the value you get, and let a value your client doesn’t recognize surface rather than defaulting it away.

| Field | Value | Meaning |
| --- | --- | --- |
| `status` | `AVAILABLE` | The image can be launched from. An image becomes visible only once its contents are in place, and there is no other status. An image that couldn’t be created never appears. |
| `architecture` | `X86_64` | The CPU architecture the image’s contents are built for. An instance launched from it runs on a machine of that architecture. |
| `platform` | `LINUX_UNIX` | The operating-system family. It covers every Linux and UNIX-like distribution. |

Platform-provided images also carry `family`, the family they belong to, and `isFamilyCurrent`, whether the family currently resolves to that image.

## What you can do [#what-you-can-do]

- [Create an image](/docs/compute/images/create) from one of your volumes
- List images with [`origin compute list-images`](/docs/compute/reference/cli#list-images) and read one with [`origin compute get-image`](/docs/compute/reference/cli#get-image)
- [Launch an instance](/docs/compute/instances/launch) from an image

## Related [#related]

- [Image families](/docs/compute/images/image-families)
- [Snapshots](/docs/storage/snapshots)
- [origin compute commands](/docs/compute/reference/cli)

