Find Ubuntu images on Oracle Cloud¶
Different versions of Ubuntu images are available on Oracle Cloud:
All LTS releases that haven’t reached end of life
Full and minimal versions
Versions for x86_64 and AArch64 (ARM64) platforms
For each of these versions, Oracle publishes a new image build every month. The latest three builds (for each version) are always listed on their cloud console, while the older ones are archived.
Find the latest Ubuntu images¶
You can find the latest three image builds using either the web console or the CLI.
While creating an instance using Compute > Instances > Create instance, under Image and shape select Change image > Ubuntu. From the displayed list, select your desired LTS release and variant (full or minimal). Then use the drop-down to select one of the three builds available for it.

The latest build is always recommended as it’ll have the most recent package updates and security vulnerability fixes. However, if you need a specific build, you can either choose one of the remaining two builds or refer to the Find older Ubuntu images section ahead.
To find images using the CLI, run:
oci compute image list --all --compartment-id <ocid> --operating-system "Canonical Ubuntu"
where <ocid>
is replaced with the appropriate compartment ID.
It will return a JSON output with details for all available image builds. You can use jq
to filter the fields that you need. You can also optionally include –region <region_name> to search in a region different from the one configured in your ~/.oci/config file. Note that the id of the images will be different for different regions.
Other options can also be added to the command. For instance, to list all Ubuntu 22.04 LTS base images (non-minimal versions), use:
oci compute image list --all --compartment-id <compartment_id> --operating-system "Canonical Ubuntu"
--operating-system-version 22.04
which (after some filtering) will give an output similar to:
{
"data": [
{
[...]
"display-name": "Canonical-Ubuntu-22.04-aarch64-2023.09.27-0",
[...]
"id": "ocid1.image.oc1.iad.aaaaaaaah3ahpwe2l4bpxl3q3hiz6ovnw2fmakh3ma4dnauhniktmiwxl72q",
[...]
"operating-system": "Canonical Ubuntu",
"operating-system-version": "22.04",
[...]
},
{
[...]
"display-name": "Canonical-Ubuntu-22.04-aarch64-2023.08.23-0",
[...]
"id": "ocid1.image.oc1.iad.aaaaaaaa6owneddgivjqxbot4nmftxao2t4lodkifzr54tqcrts26v2ppqra",
[...]
"operating-system": "Canonical Ubuntu",
"operating-system-version": "22.04",
[...]
},
{
[...]
"display-name": "Canonical-Ubuntu-22.04-aarch64-2023.07.20-0",
[...]
"id": "ocid1.image.oc1.iad.aaaaaaaagbgiy3w3psyvqarm5lcyjyort7ufmcx7qisizxsae3rdm6k75odq",
[...]
"operating-system": "Canonical Ubuntu",
"operating-system-version": "22.04",
[...]
},
{
[...]
"display-name": "Canonical-Ubuntu-22.04-2023.09.27-0",
[...]
"id": "ocid1.image.oc1.iad.aaaaaaaaxdnjyq2drtrl5njggtas25gspssotsdzpa55cdpxwafda7essgna",
[...]
"operating-system": "Canonical Ubuntu",
"operating-system-version": "22.04",
[...]
},
{
[...]
"display-name": "Canonical-Ubuntu-22.04-2023.08.28-0",
[...]
"id": "ocid1.image.oc1.iad.aaaaaaaaevjttsicdlm4h3zomclg6pztgxgg7ba54e27c4oopvkbaftvjqna",
[...]
"operating-system": "Canonical Ubuntu",
"operating-system-version": "22.04",
[...]
},
{
[...]
"display-name": "Canonical-Ubuntu-22.04-2023.07.20-0",
[...]
"id": "ocid1.image.oc1.iad.aaaaaaaaq7lzb7lkmbnp6zlcbgbcxnypaugvm2cymqtmpfsyd45jxub5ktha",
[...]
"operating-system": "Canonical Ubuntu",
"operating-system-version": "22.04",
[...]
}
]
}
This sample output shows three images for AArch64 (ARM64) and three for AMD64.
Once you know the id of the image you want, you can create an instance with:
oci compute instance launch
--compartment-id <compartment>
--availability-domain <availability-domain>
--subnet-id <public-subnet>
--image-id <image-id>
--display-name ubuntu-vm
--shape VM.Standard.E4.Flex
--shape-config '{"ocpus": 1, "memoryInGBs": 12}'
--assign-public-ip true
--ssh-authorized-keys-file ~/.ssh/id_rsa.pub
These are the minimal parameters that you’ll need to provide with the instance launch
command. For further details about this command and all of its options, refer to the Oracle CLI documentation for launching a Linux instance.
Find older Ubuntu images¶
If you want to use an image that is older than the latest three builds, you need to know its Oracle Cloud Identifier (OCID) and use that while creating the instance.
To find the OCID of archived images, visit Oracle’s image documentation website and select the required Ubuntu release. A list of all available variants for that release will be displayed. Browse to the desired variant to see its OCID for each region.
With the region / image specific OCID, you can create an instance either through the web console or through the CLI.
While creating an instance using Compute > Instances > Create instance, under Image and shape select Change image > My images. Then choose Image OCID as the image source and enter the OCID (obtained above) before launching the instance.

Use the –image-id flag while creating the instance:
oci compute instance launch
--compartment-id <compartment>
--availability-domain <availability-domain>
--subnet-id <public-subnet>
--image-id <image-id>
--display-name ubuntu-vm
--shape VM.Standard.E4.Flex
--shape-config '{"ocpus": 1, "memoryInGBs": 12}'
--assign-public-ip true
--ssh-authorized-keys-file ~/.ssh/id_rsa.pub
Find Ubuntu images for use on OKE nodes¶
Ubuntu images are available for worker nodes on Oracle Kubernetes Engine (OKE) in Oracle Cloud.
Get Ubuntu image access¶
Attention
Ubuntu worker node images for OKE are currently in a Limited Availability (LA) release. To gain access to the images, reach out to your Oracle account or support teams to express interest in this LA.
Once access has been provided to your tenancy and region then you must add an additional Policy to your root compartment to permit the listing of these images.
Use the Show manual editor button while creating the policy and add:
Define tenancy oke as ocid1.tenancy.oc1..aaaaaaaa5vrtu4bjcqpjvbworiwffgccrgrbkum64mtn33yrccjrqpzuyara
Endorse any-user to read instance-images in tenancy oke
Note
The tenancy OCID listed above for the policy belongs to the OCI OKE Service, it is not owned by Canonical.
Find an Ubuntu image¶
Once your tenancy has been enabled for the LA, you will be able to list the images from the CLI or view them through the OCI Console.
Prior to running any oci
commands, be sure that your ~/.oci/config
is configured to use your region specified for the LA enablement.
Using the oci
command, list all OKE compatible images and save them to the node-pool-options.json
file. The file will contain a list of all available OKE images including your newly added Ubuntu images.
oci ce node-pool-options get --compartment-id <compartment-id> --node-pool-option-id all | tee node-pool-options.json
Use the following to filter it down to only the newly added Ubuntu images.
jq -r '.data.sources[] | select(."source-name" | contains("ubuntu"))' node-pool-options.json
The result will contain objects of the form:
{
"image-id": "ocid1.image.oc1.phx.aaaaaaaajqzb5jcbcvh5obyg2l2hzzw5qewwhrknvlyb3zaglduivigvo4sq",
"source-name": "ubuntu-amd64-minimal-22.04-jammy-v20250604.1-OKE-1.31.1",
"source-type": "IMAGE"
}
Make note of the image-id
for the image(s) that you wish to use since they will be required in later steps.
Whether you decide to create nodes using Create Cluster > Quick Create or Add node pool, both will let you select your desired node image. That list will contain all available OKE images, including your newly added Ubuntu images.

After selecting your desired image based on the architecture, Ubuntu suite and Kubernetes version, your configuration should look similar to the image below.

Warning
Pay attention to which image you select and ensure it’s architecture corresponds to your selected pod shape.
When launching Ubuntu nodes from the console during the LA, it’s required to provide custom cloud-init user-data
to the instances to ensure they join the cluster properly.
Managed node user-data
is quite simple:
#cloud-config
runcmd:
- oke bootstrap
For Self-Managed user-data
, use the following with appropriate variable substitutions for the cluster certificate (cluster_ca_cert
) and private control plane IP (api_server_endpoint
):
#cloud-config
runcmd:
- oke bootstrap --ca ${cluster_ca_cert} --apiserver-host ${api_server_endpoint}
write_files:
- path: /etc/oke/oke-apiserver
permissions: '0644'
content: ${api_server_endpoint}
- encoding: b64
path: /etc/kubernetes/ca.crt
permissions: '0644'
content: ${cluster_ca_cert}
Copy the user-data
required for your node type and paste it into the console.
