
Once Incus is installed, everything goes through one coherent CLI: incus launch creates an instance, incus exec runs commands inside it, incus snapshot saves it. This guide walks the essential gestures on real examples: launch a container, launch a virtual machine, get inside, take a snapshot, adjust the configuration, and manage the lifecycle. Everything was tested on Incus 7.0. For anyone discovering Incus after the installation.
What you will learn
- Launch a container and a virtual machine (
incus launch). - Run commands and open a shell (
incus exec). - List and inspect instances (
incus list,incus info). - Take and restore a snapshot.
- Manage the lifecycle (start, stop, delete).
Launching your first container
The key command is incus launch <image> <name>. Images come by default from the images: remote, the official image server.
incus launch images:debian/13 c1In a few seconds the container starts and gets an address on incusbr0:
incus list+------+---------+-----------------------+-----------+| NAME | STATE | IPV4 | TYPE |+------+---------+-----------------------+-----------+| c1 | RUNNING | 10.173.191.191 (eth0) | CONTAINER |+------+---------+-----------------------+-----------+Getting inside the instance
To run a command inside, use incus exec <name> -- <command>:
incus exec c1 -- cat /etc/os-release# PRETTY_NAME="Debian GNU/Linux 13 (trixie)"For an interactive shell, incus shell (or incus exec c1 -- bash):
incus shell c1That is the whole difference with Docker: an Incus container is a complete system (with systemd, services, users), not a single process. You connect to it like a small machine.
Inspecting an instance
incus list gives the overview; incus info details one instance (state, type, resources, network):
incus info c1# Name: c1# Status: RUNNING# Type: container# Architecture: x86_64To see the images cached locally:
incus image listLaunching a virtual machine
The same launch creates a full virtual machine with the --vm option (QEMU) instead of a container:
incus launch images:ubuntu/24.04 vm1 --vm+------+---------+-------------------------+-----------------+| NAME | STATE | IPV4 | TYPE |+------+---------+-------------------------+-----------------+| vm1 | RUNNING | 10.173.191.248 (enp5s0) | VIRTUAL-MACHINE |+------+---------+-------------------------+-----------------+Same commands, two technologies: incus exec vm1 -- ... works in the virtual machine just as in the container, thanks to the built-in agent.
Taking a snapshot
Before a risky operation, incus snapshot create freezes the instance state:
incus snapshot create c1 snap0incus snapshot list c1+-------+----------------------+------------+----------+| NAME | TAKEN AT | EXPIRES AT | STATEFUL |+-------+----------------------+------------+----------+| snap0 | 2026/06/30 20:59 UTC | | NO |+-------+----------------------+------------+----------+If something goes wrong, restore with incus snapshot restore c1 snap0. The snapshot captures the disk; add --stateful to also freeze the memory of a running instance.
Adjusting the configuration
Resources are set live with incus config set:
incus config set c1 limits.memory=512MiBincus config get c1 limits.memory# 512MiBYou limit CPU the same way (limits.cpu=2), add devices (disk, network card, port forwarding), and enable automatic start (boot.autostart=true).
Managing the lifecycle
incus stop c1 # stopincus start c1 # startincus restart c1 # restartincus delete c1 # delete (a stopped instance)incus delete c1 --force # force deletion of a running instanceA deleted instance is gone for good, along with its snapshots: remember to export or back up what matters first.
Key points
incus launch images:<distro> <name>creates and starts an instance from theimages:remote.- Add
--vmfor a virtual machine instead of a container; the same commands apply. incus execruns a command,incus shellopens a shell: an Incus container is a complete system.incus snapshot createsaves the state; restore withsnapshot restore.incus config settunes memory, CPU and devices live.
FAQ: common questions about first steps with Incus
incus launch
incus launch images:debian/13 c1
incus list
incus launch <image> <name> creates and starts the container. The image comes from the images: remote (the official server). In a few seconds the instance gets an address on incusbr0.
To browse the available images: incus image list images:.
Create and start, or create only
incus launch: creates and starts the instance in one command, the common case;incus init: creates the instance without starting it.
init is useful to configure the instance (CPU, memory, devices) before its first boot, then start it with incus start. To get going quickly, use launch.
incus exec and incus shell
incus exec c1 -- cat /etc/os-release # one command
incus shell c1 # an interactive shell
An Incus container is a complete system (systemd, services, users): you connect to it like a small machine. That is the difference from a Docker container, which runs a single application process.
The --vm option
incus launch images:ubuntu/24.04 vm1 --vm
The same command, with --vm, creates a full QEMU virtual machine instead of a container. The same commands (exec, info, snapshot) work thanks to the built-in agent.
Prerequisites: hardware virtualisation (KVM) on the host, and nested virtualisation if Incus itself runs in a VM.
incus snapshot
incus snapshot create c1 snap0
incus snapshot list c1
incus snapshot restore c1 snap0
create freezes the disk state of the instance; restore goes back to it. Add --stateful to also freeze the memory of a running instance.
Handy before any risky operation: you can step back with one command.
Next steps
- Running OCI containers with Incus: run application images from Docker Hub on the server you just took in hand.
- Managing containers and VMs: the image registry, devices and configuration that
incus launchdoes not show. - Incus networking: make your first instances reachable from somewhere other than the host.