LinuxCommandLibrary

incus

Manage virtual machines and containers

TLDR

List all containers and virtual machines (both running and stopped)

$ incus list
copy

Create a container from an image, with a custom name
$ incus create [image] [container_name]
copy

Start or stop an existing container
$ incus [start|stop] [container_name]
copy

Open a shell inside an already running container
$ incus shell [container_name]
copy

Remove a stopped container
$ incus delete [container_name]
copy

Pull an image from an image repository (remote) to local
$ incus copy [remote]:[image] local:[custom_image_name]
copy

List all available images in the official images: remote
$ incus image list images:
copy

List all images already downloaded to the local: remote
$ incus image list local:
copy

SYNOPSIS

incus [global options...] command [command options] [arguments]

PARAMETERS

-d, --debug
    Enable debug output

-h, --help
    Show help message

-q, --quiet
    Reduce output verbosity

-v, --verbose
    Increase verbosity (can repeat)

--profile=PROFILE[,...]
    Apply comma-separated profiles

--project=PROJECT
    Select project (default: default)

-c, --config=KEY=VALUE
    Override instance config key

--color=auto|always|never
    Control colored output

--period=PERIOD
    Set polling period (default: 10ms)

--timeout=DURATION
    Set operation timeout (default: 30s)

--force-local
    Force use of local server

--target=NODE
    Target cluster node

--type=container|instance|vm
    Instance type filter

--version
    Print incus version

DESCRIPTION

Incus is a next-generation system container and virtual machine manager. The incus command serves as its primary CLI client, interacting with the incusd daemon to manage instances. It supports creating, configuring, starting, stopping, snapshotting, cloning, and migrating both containers (using LXC) and VMs (using QEMU/KVM).

Key capabilities include unprivileged operation, clustering for HA, live migration without shared storage, image import/export from stores like images.linuxcontainers.org, device passthrough (GPU, USB, PCI), and network management with bridges, OVS, and macvlan. Incus uses a REST API over Unix socket or TCP, with YAML config files and profiles for reusability.

Designed for servers, clouds, and edge, it emphasizes security, performance, and simplicity over Docker-style orchestration. Production-ready with storage support for dir, btrfs, lvm, zfs, ceph, and more.

CAVEATS

Requires incusd daemon running; most ops need root or incus-admin group. Cluster ops require multi-node setup. Unprivileged users limited to user namespaces.

COMMON SUBCOMMANDS

incus init [image] [instance] – Initialize instance
incus launch image [instance] – Launch and start
incus start instance – Start instance
incus list – List instances
incus delete instance – Delete instance
incus exec instance -- cmd – Run command

DAEMON STARTUP

Start with systemctl start incusd. Enable with systemctl enable incusd. Config at /etc/incus/incus.conf.

HISTORY

Forked from LXD 5.0 in July 2022 by LXC team (Stéphane Graber et al.) due to Canonical's AGPL shift and governance. Reached 1.0 in 2023; active development focuses on AGPLv3+, multi-arch VMs, and QEMU integration.

SEE ALSO

incusd(8), lxc(1), lxd(1), podman(1), systemd-nspawn(1)

Copied to clipboard