---
display_name: Incus System Container with Docker
description: Develop in an Incus System Container with Docker using incus
icon: ../../../../.icons/lxc.svg
verified: true
tags: [local, incus, lxc, lxd]
---

# Incus System Container with Docker

Develop in an Incus System Container and run nested Docker containers using Incus on your local infrastructure.

## Prerequisites

1. Install [Incus](https://linuxcontainers.org/incus/) on the same machine as Coder.
2. Allow Coder to access the Incus socket.
   - If you're running Coder as system service, run `sudo usermod -aG incus-admin coder` and restart the Coder service.
   - If you're running Coder as a Docker Compose service, get the group ID of the `incus-admin` group by running `getent group incus-admin` and add the following to your `compose.yaml` file:

     ```yaml
     services:
       coder:
         volumes:
           - /var/lib/incus/unix.socket:/var/lib/incus/unix.socket
         group_add:
           - 996 # Replace with the group ID of the `incus-admin` group
     ```

3. Create a storage pool named `coder` and `btrfs` as the driver by running `incus storage create coder btrfs`.

## Usage

> **Note:** this template requires using a container image with cloud-init installed such as `ubuntu/jammy/cloud/amd64`.

1. Run `coder templates init -id incus`
1. Select this template
1. Follow the on-screen instructions

## Extending this template

See the [lxc/incus](https://registry.terraform.io/providers/lxc/incus/latest/docs) Terraform provider documentation to
add the following features to your Coder template:

- HTTPS incus host
- Volume mounts
- Custom networks
- More

We also welcome contributions!
