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,
- docker required ?
- 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