Error: Failed instance creation: Image not found

root@ubuntu:/data# incus remote list
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+
|      NAME       |                URL                 |   PROTOCOL    |  AUTH TYPE  | PUBLIC | STATIC | GLOBAL |
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+
| docker          | https://docker.io                  | oci           | none        | YES    | NO     | NO     |
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+
| images          | https://images.linuxcontainers.org | simplestreams | none        | YES    | NO     | NO     |
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+
| local (current) | unix://                            | incus         | file access | NO     | YES    | NO     |
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+


root@ubuntu:/data# incus launch docker:nginx  nginx
Launching nginx
Error: Failed instance creation: Image not found

Welcome!

This is me launching the image successfully. Can you verify your Incus version. Also, what do you get with incus image info docker:nginx?

$ incus version
Client version: 6.12
Server version: 6.12
$ incus remote list
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+
|      NAME       |                URL                 |   PROTOCOL    |  AUTH TYPE  | PUBLIC | STATIC | GLOBAL |
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+
| docker          | https://docker.io                  | oci           | none        | YES    | NO     | NO     |
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+
| images          | https://images.linuxcontainers.org | simplestreams | none        | YES    | NO     | NO     |
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+
| local (current) | unix://                            | incus         | file access | NO     | YES    | NO     |
+-----------------+------------------------------------+---------------+-------------+--------+--------+--------+
$ incus image info docker:nginx
Fingerprint: 5ed8fcc66f4ed123c1b2560ed708dc148755b6e4cbd8b943fab094f2c6bfa91e
Size: 69.03MiB
Architecture: x86_64
Type: container
Public: yes
Timestamps:
    Created: 2025/04/16 17:50 EEST
    Uploaded: 2025/04/16 17:50 EEST
    Expires: never
    Last used: never
Properties:
    type: oci
    architecture: x86_64
    description: docker.io/library/nginx (OCI)
    id: nginx
Aliases:
    - nginx
Cached: no
Auto update: disabled
Profiles: []
$ incus launch docker:nginx nginx
Launching nginx
Retrieving image: Retrieving OCI image from registry
Retrieving image: Generating image metadata          
Retrieving image: Generating rootfs tarball: 13.95MB (13.95MB/s)
Retrieving image: Unpacking image: 100% (4.17GB/s)             
$ incus list -c n4s nginx
+-------+---------------------+---------+
| NAME  |        IPV4         |  STATE  |
+-------+---------------------+---------+
| nginx | 10.10.10.111 (eth0) | RUNNING |
+-------+---------------------+---------+
$

incus show image info normally. but not found when launch it,

  1. docker required ?
  2. where is the image located?
root@70afa42c6bbd:/# incus image info docker:nginx
Fingerprint: c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66
Size: 69.03MiB
Architecture: x86_64
Type: container
Public: yes
Timestamps:
    Created: 2025/04/16 14:50 UTC
    Uploaded: 2025/04/16 14:50 UTC
    Expires: never
    Last used: never
Properties:
    type: oci
    architecture: x86_64
    description: docker.io/library/nginx (OCI)
    id: nginx
Aliases:
    - nginx
Cached: no
Auto update: disabled
Profiles: []
root@70afa42c6bbd:/# incus launch docker:nginx nginx
Launching nginx
Error: Failed instance creation: Failed getting remote image info: Image not found

Okay, so the CLI can access it but the Incus daemon can’t.

Are you running in an environment that uses an HTTP proxy?

no proxy

I tried again and I got the new image fingerprint (as you do now), c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66. Therefore, the hash is reported correctly.

Then, I used incus image list to verify I do not have a cached version of the image (I had a cached version and I removed it with incus image delete <hash>.

Then, I kept running incus monitor on a second terminal and run the command incus launch docker:nginx nginx.

Here are my logs when Incus makes the network connection to the remote OCI server.

Relevant logs of `incus monitor`
...
location: none
metadata:
  context:
    URL: https://docker.io
  level: debug
  message: Connecting to a remote OCI server
timestamp: "2025-04-29T08:50:48.720984182+03:00"
type: logging


location: none
metadata:
  context:
    class: task
    description: Creating instance
    operation: 8100aa15-7eb7-4ddf-8701-93bfac5cb2d1
    project: default
  level: debug
  message: Started operation
timestamp: "2025-04-29T08:50:48.720632912+03:00"
type: logging


location: none
metadata:
  context:
    fingerprint: c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66
  level: debug
  message: Lock acquired for image
timestamp: "2025-04-29T08:50:51.546145812+03:00"
type: logging


location: none
metadata:
  context:
    fingerprint: c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66
  level: debug
  message: Acquiring lock for image
timestamp: "2025-04-29T08:50:51.546110136+03:00"
type: logging


location: none
metadata:
  context:
    alias: nginx
    fingerprint: c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66
    operation: 8100aa15-7eb7-4ddf-8701-93bfac5cb2d1
    server: https://docker.io
    trigger: /1.0/operations/8100aa15-7eb7-4ddf-8701-93bfac5cb2d1
  level: info
  message: Downloading image
timestamp: "2025-04-29T08:50:51.547244867+03:00"
type: logging


location: none
metadata:
  context:
    class: task
    description: Creating instance
    operation: 8100aa15-7eb7-4ddf-8701-93bfac5cb2d1
    project: default
  level: debug
  message: Updated metadata for operation
timestamp: "2025-04-29T08:50:51.547464564+03:00"
type: logging


location: none
metadata:
  class: task
  created_at: "2025-04-29T08:50:48.714399076+03:00"
  description: Creating instance
  err: ""
  id: 8100aa15-7eb7-4ddf-8701-93bfac5cb2d1
  location: none
  may_cancel: false
  metadata:
    download_progress: Retrieving OCI image from registry
  resources:
    instances:
    - /1.0/instances/nginx
  status: Running
  status_code: 103
  updated_at: "2025-04-29T08:50:51.547457421+03:00"
project: default
timestamp: "2025-04-29T08:50:51.547485162+03:00"
type: operation


location: none
metadata:
  context:
    class: task
    description: Creating instance
    operation: 8100aa15-7eb7-4ddf-8701-93bfac5cb2d1
    project: default
  level: debug
  message: Updated metadata for operation
timestamp: "2025-04-29T08:51:05.696081713+03:00"
type: logging


location: none
metadata:
  class: task
  created_at: "2025-04-29T08:50:48.714399076+03:00"
  description: Creating instance
  err: ""
  id: 8100aa15-7eb7-4ddf-8701-93bfac5cb2d1
  location: none
  may_cancel: false
  metadata:
    download_progress: Unpacking the OCI image
  resources:
    instances:
    - /1.0/instances/nginx
  status: Running
  status_code: 103
  updated_at: "2025-04-29T08:51:05.696056827+03:00"
project: default
timestamp: "2025-04-29T08:51:05.696127428+03:00"
type: operation


location: none
metadata:
  class: task
  created_at: "2025-04-29T08:50:48.714399076+03:00"
  description: Creating instance
  err: ""
  id: 8100aa15-7eb7-4ddf-8701-93bfac5cb2d1
  location: none
  may_cancel: false
  metadata:
    download_progress: Generating image metadata
  resources:
    instances:
    - /1.0/instances/nginx
  status: Running
  status_code: 103
  updated_at: "2025-04-29T08:51:07.248216873+03:00"
project: default
timestamp: "2025-04-29T08:51:07.248293034+03:00"
type: operation

This might help to narrow down the issue. Also, in my case, Incus was connecting to the IPv6 address of DockerHub.

Also, you can use this script to download the image (and figure out where it gets stuck), https://www.baeldung.com/ops/docker-download-image-no-client

Here’s the output I get.

Output of download script
root@mycontainer:~# ./download-frozen-image-v2.sh /tmp/nginx nginx:latest@sha256:c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66
Downloading 'library/nginx:latest@sha256:c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66' (7 layers)...
-#O=-#     #       #                                                                                                                                                                                               
############################################################################################################################################################################################################ 100.0%
-#O=-#     #       #                                                                                                                                                                                               
############################################################################################################################################################################################################ 100.0%
-#O=-#     #       #                                                                                                                                                                                               
############################################################################################################################################################################################################ 100.0%
-#O=-#     #       #                                                                                                                                                                                               
############################################################################################################################################################################################################ 100.0%
-#O=-#     #       #                                                                                                                                                                                               
############################################################################################################################################################################################################ 100.0%
-#O=-#     #       #                                                                                                                                                                                               
############################################################################################################################################################################################################ 100.0%
-#O=-#     #       #                                                                                                                                                                                               
############################################################################################################################################################################################################ 100.0%

Download of images into '/tmp/nginx' complete.
Use something like the following to load the result into a Docker daemon:
  tar -cC '/tmp/nginx' . | docker load
root@mycontainer:~# ls -l /tmp/nginx/
total 10
drwxr-xr-x 2 root root    5 Apr 29 06:12 464d6d2ab524c3ec8e4a47e3f2e758017c82a54f59cd1a6b47f0f7ae59cec7ec
drwxr-xr-x 2 root root    5 Apr 29 06:12 9264d7850abc0128cd61ed3fdce12eacb99f062921725905f00e9a3ac26b7a5d
-rw-r--r-- 1 root root 8584 Apr 29 06:12 a830707172e8069c09cf6c67a04e23e5a1a332d70a90a54999b76273a928b9ce.json
drwxr-xr-x 2 root root    5 Apr 29 06:12 b5d66a6d0d13c823ea9091cdaa894dd9d6dfdc961909d800a0ca82987f08e289
drwxr-xr-x 2 root root    5 Apr 29 06:12 bad7b41ef3155ee174d28d825aec0f97bc8a7a1d7b701c75f78b07bb730ba6b9
drwxr-xr-x 2 root root    5 Apr 29 06:12 c27f6b4ae34ad8076d2550feb332e4d7fae199405a0cc77feab8496eddbac3a3
drwxr-xr-x 2 root root    5 Apr 29 06:12 d6378e2266bb9211b65d0df5bd92d58e96a0b7ed1738eab33a00d84386f20574
drwxr-xr-x 2 root root    5 Apr 29 06:12 fd723445de8ab66cb3ffbaad52788bdf0a73d89bbb1b8a8cae51a4217ae16b01
-rw-r--r-- 1 root root  754 Apr 29 06:12 manifest.json
-rw-r--r-- 1 root root   31 Apr 29 06:12 repositories
root@mycontainer:~# cat /tmp/nginx/manifest.json 
[
  {
    "Config": "a830707172e8069c09cf6c67a04e23e5a1a332d70a90a54999b76273a928b9ce.json",
    "RepoTags": [
      "nginx:latest"
    ],
    "Layers": [
      "b5d66a6d0d13c823ea9091cdaa894dd9d6dfdc961909d800a0ca82987f08e289/layer.tar",
      "fd723445de8ab66cb3ffbaad52788bdf0a73d89bbb1b8a8cae51a4217ae16b01/layer.tar",
      "c27f6b4ae34ad8076d2550feb332e4d7fae199405a0cc77feab8496eddbac3a3/layer.tar",
      "bad7b41ef3155ee174d28d825aec0f97bc8a7a1d7b701c75f78b07bb730ba6b9/layer.tar",
      "464d6d2ab524c3ec8e4a47e3f2e758017c82a54f59cd1a6b47f0f7ae59cec7ec/layer.tar",
      "d6378e2266bb9211b65d0df5bd92d58e96a0b7ed1738eab33a00d84386f20574/layer.tar",
      "9264d7850abc0128cd61ed3fdce12eacb99f062921725905f00e9a3ac26b7a5d/layer.tar"
    ]
  }
]
root@mycontainer:~# 

strange,after exec “download-frozen-image-v2.sh”,do not report “not found”,
but report “No root device could be found”

root@70afa42c6bbd:/# ./download-frozen-image-v2.sh /tmp/nginx nginx:latest@sha256:c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66
./download-frozen-image-v2.sh: line 221: type: go: not found
Downloading 'library/nginx:latest@sha256:c15da6c91de8d2f436196f3a768483ad32c258ed4e1beb3d367a27ed67253e66' (7 layers)...
-#O=#    #       #
############################################################################################################################################################################## 100.0%
-=#=- #     #       #
############################################################################################################################################################################## 100.0%
-=#=- #     #       #
############################################################################################################################################################################## 100.0%
-#O=#    #       #
############################################################################################################################################################################## 100.0%
-=#=- #     #       #
############################################################################################################################################################################## 100.0%
-#O=#    #       #
############################################################################################################################################################################## 100.0%
-=#=- #     #       #
############################################################################################################################################################################## 100.0%

Download of images into '/tmp/nginx' complete.
Use something like the following to load the result into a Docker daemon:
  tar -cC '/tmp/nginx' . | docker load
root@70afa42c6bbd:/# ls -l /tmp/nginx/
total 48
drwxr-xr-x 2 root root 4096 Apr 29 06:37 464d6d2ab524c3ec8e4a47e3f2e758017c82a54f59cd1a6b47f0f7ae59cec7ec
drwxr-xr-x 2 root root 4096 Apr 29 06:37 9264d7850abc0128cd61ed3fdce12eacb99f062921725905f00e9a3ac26b7a5d
-rw-r--r-- 1 root root 8584 Apr 29 06:36 a830707172e8069c09cf6c67a04e23e5a1a332d70a90a54999b76273a928b9ce.json
drwxr-xr-x 2 root root 4096 Apr 29 06:36 b5d66a6d0d13c823ea9091cdaa894dd9d6dfdc961909d800a0ca82987f08e289
drwxr-xr-x 2 root root 4096 Apr 29 06:37 bad7b41ef3155ee174d28d825aec0f97bc8a7a1d7b701c75f78b07bb730ba6b9
drwxr-xr-x 2 root root 4096 Apr 29 06:37 c27f6b4ae34ad8076d2550feb332e4d7fae199405a0cc77feab8496eddbac3a3
drwxr-xr-x 2 root root 4096 Apr 29 06:37 d6378e2266bb9211b65d0df5bd92d58e96a0b7ed1738eab33a00d84386f20574
drwxr-xr-x 2 root root 4096 Apr 29 06:37 fd723445de8ab66cb3ffbaad52788bdf0a73d89bbb1b8a8cae51a4217ae16b01
-rw-r--r-- 1 root root  754 Apr 29 06:37 manifest.json
-rw-r--r-- 1 root root   31 Apr 29 06:37 repositories
root@70afa42c6bbd:/# incus launch docker:nginx nginx
Launching nginx
Error: Failed instance creation: Failed creating instance record: Failed initializing instance: Invalid devices: Failed detecting root disk device: No root device could be found

Something appears to be wrong with the setup. The following commands should show more information about your setup.

incus profile show default
incus storage list
incus storage show mystoragepool

I think I figured out what happened, and why you got those weird errors.
In Incus you can create projects, and launch containers into those projects.
When you create a project, you switch into that project, and the Incus CLI will remember where you switched in (until you switch back). When you create a new project and switch into it, you need to fix up the default profile as well.

Let’s see in action. I created a temporary project, switched into it, but cannot create new instances without some configuration.

$ incus project create temp-project
Project temp-project created
$ incus project switch temp-project
$ incus launch images:alpine/edge mycontainer
Launching mycontainer
Error: Failed instance creation: Failed creating instance record: Failed initializing instance: Failed getting root disk: No root device could be found
$ 

Let’s tear up and return to the default project. When we tried earlier to launch an image, Incus downloaded the image and saved it into the project. We need to remove that (unused) image before deleting the project (or use the --force flag).

$ incus project list
...
$ incus project switch default
$ incus project delete temp-project
Error: Only empty projects can be removed.
$ incus image list
+-------+--------------+--------+------------------------------------+--------------+-----------+---------+-----------------------+
| ALIAS | FINGERPRINT  | PUBLIC |            DESCRIPTION             | ARCHITECTURE |   TYPE    |  SIZE   |      UPLOAD DATE      |
+-------+--------------+--------+------------------------------------+--------------+-----------+---------+-----------------------+
|       | 8333ed8e25ff | no     | Alpine edge amd64 (20250429_13:00) | x86_64       | CONTAINER | 3.22MiB | 2025/04/30 17:40 EEST |
+-------+--------------+--------+------------------------------------+--------------+-----------+---------+-----------------------+
$ incus image delete 8333ed8e25ff
$ incus project switch default
$ incus project delete temp-project
Project temp-project deleted
$ 

Thks,Follow the steps below to solve the problem
1.create new project and switched into it
2.set disk device to profile of new project
3.incus launch docker:nginx nginx